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

为什么使用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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序