import java.io.*;
class Lee{
public static void main (String[] args){
FileOutputStream fos=null;
FileInputStream fis=null;
try{
fos=new FileOutputStream("D:\毕向东视频\9.png");
fis=new FileInputStream("D:\毕向东视频\99.png");
byte [] buf=new byte[1024];
int len=0;
while((len=fis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
}
catch(IOException e){
throw new RuntimeException("复制失败");
}
finally{
try{
if(fis!=null)
fis.close();
}
catch(IOException e){
throw new RuntimeException("读取失败");
}
}
}
}
首先,你的文件路径有问题,编译出错,尽量使用/这个而不是反斜杠\,因为反斜杠是转义字符。
其次,在你的异常分支打印堆栈信息,便于排错。throw new RuntimeException("复制失败");这句话抛出之前先打印e.printStackTrace();
这路径写法编译不报错?应该得2个\
fos=new FileOutputStream("D:\\毕向东视频\\9.png");
fis=new FileInputStream("D:\\毕向东视频\\99.png");
不要写绝对路径,而且路径中最好不要带中文,复制的话 我建议字节流,因为字符流 一次读两个字节,有可能碰到结尾是单字节 就会出错!
补充一下,你检查下图片的大小,如果超过1M,那么你使用1024字节的缓冲区就可能使文件受损的。
修正代码如下:
class Lee {
public static void main(String[] args) {
FileOutputStream fos = null;
FileInputStream fis = null;
try {
fos = new FileOutputStream("D:/copy.jpg");
fis = new FileInputStream("D:/照片打印/picture2.jpg");
byte[] buf = new byte[2048];
int len = 0;
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
fos.flush();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("复制失败");
} finally {
try {
if (fis != null)
fis.close();
fos.close();
} catch (IOException e) {
throw new RuntimeException("读取失败");
}
}
}
}
急求大神指点,谢谢了