A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王振2014 中级黑马   /  2014-6-22 18:44  /  894 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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不是什么流都可以接受吗,图片是传过去了,但是打开后是图片错误
直接使用缓存输出流就可以
这是为什么?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

7 个回复

倒序浏览
又试了下PrintStream是可以的.....
回复 使用道具 举报
PrintWriter是字符流   操作二进制文件  最好用字节流

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
操作媒体类型文件使用字节流,printWriter是字符打印流,要用也得用字节打印流printStream啊!
回复 使用道具 举报
API中是这样说的:
向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。

       所以说这些原始字节没有被复制过去,所以图片会显示有损失,这个你可以看一下原图片和复制后的图片大小应该是不一样的
回复 使用道具 举报
补充下昂,这个API解释是:PrintWriter的解释
回复 使用道具 举报
print方法在哪,自动刷新没设置!
回复 使用道具 举报
明白了,得多看文档啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马