黑马程序员技术交流社区

标题: 字符流拷贝图片的问题 [打印本页]

作者: 汪小照    时间: 2012-10-13 10:26
标题: 字符流拷贝图片的问题
本帖最后由 汪小照 于 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();
}
}


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

作者: 李润根    时间: 2012-10-13 12:37
本帖最后由 我是菜鸟 于 2012-10-13 12:38 编辑

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

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

知道为什么,可以看下源码
作者: 郑世光    时间: 2012-10-13 13:29
图片是以字节流保存的,字符流都是有编码表的。你用字符流去读取时,它会将读取到的字节对照字符编码表进行解码,如果真的解码成功了
那你的图片读出来的岂不是一些字符了。
作者: 郑世光    时间: 2012-10-13 13:31
本帖最后由 郑世光 于 2012-10-13 13:34 编辑

校园网真TMD慢
作者: 冯盼    时间: 2012-10-13 14:17
因为图片原始数据为二进制数据,以字符流方式读取的话会首先将读取的字节流根据相应的编码表转换为相应字符.




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