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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪小照 中级黑马   /  2012-10-13 10:26  /  1510 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 汪小照 于 2012-10-14 11:59 编辑

以下是字符流拷贝图片的代码:
import java.io.*;
class CopyTuPian
{
public static void main(String[] args) throws Exception
{
  copyTuPian("1.gif");
}
public static void copyTuPian(String file) throws Exception
{
         FileReader fr = new FileReader(file);
   FileWriter fw = new FileWriter("1_Copy.gif");
  char [] buf = new char[1024];
        int len =0;
  while((len=fr.read(buf))!=-1)
  {
   fw.write(buf,0,len);
   fw.flush();
  }
  fr.close();
  fw.close();
}
}


用字节流可以拷贝图片成功,为什么用字符流拷贝图片就不成功呢?如果其中涉及到了编码的问题,麻烦各位坛友对这个问题解释清楚一下啦?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
本帖最后由 我是菜鸟 于 2012-10-13 12:38 编辑

FileReader fr = new FileReader(file);
FileWriter fw = new FileWriter("1_Copy.gif");

这两个是操作字符的,图片要用字节流InputStream\OutputStream

知道为什么,可以看下源码

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
图片是以字节流保存的,字符流都是有编码表的。你用字符流去读取时,它会将读取到的字节对照字符编码表进行解码,如果真的解码成功了
那你的图片读出来的岂不是一些字符了。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 郑世光 于 2012-10-13 13:34 编辑

校园网真TMD慢

评分

参与人数 1黑马币 +15 收起 理由
韩军博 + 15 神马都是浮云

查看全部评分

回复 使用道具 举报
因为图片原始数据为二进制数据,以字符流方式读取的话会首先将读取的字节流根据相应的编码表转换为相应字符.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马