黑马程序员技术交流社区

标题: 关于BufferedInputStream和BufferedOutputStream读写图片的问题 [打印本页]

作者: 王春蕾    时间: 2014-4-22 15:57
标题: 关于BufferedInputStream和BufferedOutputStream读写图片的问题
本帖最后由 王春蕾 于 2014-4-22 16:01 编辑

我自定义了一个读取和写入图片文件的函数,代码如下:
  1.         public static void copyPic2() throws IOException {
  2.                
  3.                 FileInputStream fis = new FileInputStream("temp\\a.png");
  4.                 FileOutputStream fos = new FileOutputStream("temp\\aa.jpg");
  5.                
  6.                 BufferedInputStream bis=new BufferedInputStream(fis);
  7.                 BufferedOutputStream bos=new BufferedOutputStream(fos);
  8.                 int len=0;
  9.                 byte[] buf=new byte[1024];
  10.                 while((len=bis.read(buf))!=-1)
  11.                 {
  12.                         bos.write(buf,0,len);
  13.                 }
  14.         }
复制代码

要读取的图片是这样的:
E:\work\IOProj\temp\a.png
运行结果却是这样的:

PS:上传的图片看不清楚,图片的下面少了几行像素(=_=考验亲们眼力劲的时候到了!),在我的电脑上显示的是下面一部分是黑色的背景
E:\work\IOProj\temp\aa.png
请问是怎么回事啊??

作者: yanzhendong    时间: 2014-4-22 16:31
没有刷新,少的那一点就是最后一个缓冲区中的数据
  1.         public static void copyPic2() throws IOException {
  2.                
  3.                 FileInputStream fis = new FileInputStream("temp\\a.png");
  4.                 FileOutputStream fos = new FileOutputStream("temp\\aa.jpg");
  5.                
  6.                 BufferedInputStream bis=new BufferedInputStream(fis);
  7.                 BufferedOutputStream bos=new BufferedOutputStream(fos);
  8.                 int len=0;
  9.                 byte[] buf=new byte[1024];
  10.                 while((len=bis.read(buf))!=-1)
  11.                 {
  12.                         bos.write(buf,0,len);
  13.                 }
  14. /*while循环完以后要刷新一下,否则还有一部分数据在输出流缓冲区中:*/
  15. bos.flush();
  16.         }
复制代码

作者: 今生无憾    时间: 2014-4-22 16:38
flush一下输出流管道试试~~  ,显示图片,建立好缓冲区,读取图片完成后,一下子显示出来即 flush.
作者: 流年飞逝    时间: 2014-4-22 21:32
楼主最好有一个好习惯,就是打开了流,一定要关闭流!如果你关闭流了,也不会出现缺少像素的问题!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2