求求不要再NULL了 2020-06-15 21:47 采纳率: 100%
浏览 553
已采纳

为什么使用Java缓冲流复制的图片打不开。

我两个相同的代码,都使用缓冲流为什么一个复制的图片可以打开而另外一个复制的图片打不开呢?

可以打开复制图片的代码:


package review;

import java.io.*;



public class FileTest {
    public static void main(String[] args) {
        BufferedInputStream bis = null;
        BufferedOutputStream bio = null;
        try {
            File file = new File("D:\\Desktop\\a.jpg");
            File file2 = new File("D:\\Desktop\\3.jpg");
            FileInputStream fr = new FileInputStream(file);
            FileOutputStream fw = new FileOutputStream(file2);
            bis = new BufferedInputStream(fr);
            bio = new BufferedOutputStream(fw);
            byte[] ch = new byte[1024];
            int len;
            while ((len = bis.read(ch)) != -1) {
                bio.write(ch, 0, len);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (bis != null) {
                try {
                    bis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (bio != null) {
                try {
                    bio.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

    }
}

复制的图片打不开的代码:

package review;

import java.io.*;

public class BUfferedHomework {
    public static void main(String[] args) {
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            File file1 = new File("D:\\Desktop\\a.jpg");
            File file2 = new File("D:\\Desktop\\b.jpg");
            FileInputStream fis = new FileInputStream(file1);
            FileOutputStream fos = new FileOutputStream(file2);
            bis = new BufferedInputStream(fis);
            bos = new BufferedOutputStream(fos);
            byte[] buff = new byte[2048];
            int len;
            while ((len = bis.read()) != -1) {
                bos.write(buff, 0, len);
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                if (bis != null) {
                    bis.close();

                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                if (bos != null) {
                    bos.close();

                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

这是程序运行的效果:

图片说明

还请各位帮我看看这是什么情况呀?

  • 写回答

2条回答 默认 最新

  • Joker_Wanghy 2020-06-16 13:51
    关注

    byte[] buff = new byte[2048];
    int len;
    while ((len = bis.read(buff)) != -1) {
    bos.write(buff, 0, len);
    }

    read(buff)哥哥啊,这个不知道哪里不对,还不能对比吗。。。。。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出