字节流复制图片的问题,报错,复制失败,图片损坏而且为0 kb

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("读取失败");
            }
        }
    }
}

急求大神指点,谢谢了