黑马程序员技术交流社区

标题: 为什么会图片错误。。 [打印本页]

作者: 王振2014    时间: 2014-6-22 18:44
标题: 为什么会图片错误。。
  1. BufferedInputStream bi = new BufferedInputStream(new FileInputStream("C://111.jpg"));
  2.                
  3.                 PrintWriter bo = new PrintWriter(new BufferedOutputStream(new FileOutputStream("D://12223.jpg")));
  4.                
  5. //                BufferedOutputStream bo  = new BufferedOutputStream(new FileOutputStream("D://11222.jpg"));
  6.                 int len;
  7.                 while((len = bi.read()) != -1)
  8.                 {
  9.                         bo.write(len);
  10.                         bo.flush();
  11.                 }
  12.                
  13.                 bo.close();
  14.                 bi.close();
复制代码
PrintWriter不是什么流都可以接受吗,图片是传过去了,但是打开后是图片错误
直接使用缓存输出流就可以
这是为什么?


作者: 王振2014    时间: 2014-6-22 18:48
又试了下PrintStream是可以的.....
作者: 爨庚轩    时间: 2014-6-22 19:27
PrintWriter是字符流   操作二进制文件  最好用字节流
作者: 波涛    时间: 2014-6-22 19:44
操作媒体类型文件使用字节流,printWriter是字符打印流,要用也得用字节打印流printStream啊!
作者: 那片天空    时间: 2014-6-22 20:05
API中是这样说的:
向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。

       所以说这些原始字节没有被复制过去,所以图片会显示有损失,这个你可以看一下原图片和复制后的图片大小应该是不一样的
作者: 那片天空    时间: 2014-6-22 20:07
补充下昂,这个API解释是:PrintWriter的解释
作者: MasMajesty    时间: 2014-6-22 20:58
print方法在哪,自动刷新没设置!
作者: 王振2014    时间: 2014-6-23 09:46
明白了,得多看文档啊




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