黑马程序员技术交流社区

标题: IO复制文件问题 [打印本页]

作者: 孟伟娟    时间: 2012-12-6 16:39
标题: IO复制文件问题
  1. import java.io.*;
  2. public class CopyFIle {

  3. /**复制一个文件到别的地方(如从c盘到d盘)
  4. 分析:源:c盘
  5. 目的:d盘,应该有一个文件。
  6. 先读取c盘的文件,将读取到的数据写入到目的地中。用到字符流技术。
  7. */
  8. public static void main(String[] args) throws IOException{
  9. // TODO Auto-generated method stub
  10. //创建读取流,和c盘文件相关联
  11. FileReader fr = new FileReader("c:/abc.txt");

  12. //创建一个写入流,和d盘文件相关联
  13. FileWriter fw = new FileWriter("d:/copy.txt");
  14. //方式一:
  15. int ch = 0;
  16. while((ch=fr.read())!=-1){
  17. System.out.println(ch);
  18. fw.write(ch);
  19. fw.flush();
  20. }
  21. //方式二:
  22. /*//读取文件,用read(char[] buf)方法
  23. char[] buf = new char[1024];
  24. int len = 0;
  25. while((len=fr.read(buf))!=-1){
  26. //写入写入流缓冲区中
  27. fw.write(buf, 0, len);
  28. //刷新缓冲区
  29. fw.flush();
  30. }*/
  31. //关闭资源
  32. fr.close();
  33. fw.close();

  34. }

  35. }
复制代码
我复制txt文件,可以正常显示,但是复制doc文件时,复制后的文件为一堆乱码,怎么回事,是编码的问题吗?

作者: 陈建华    时间: 2012-12-6 17:07
doc文档采用的可能是字节流的方式,我在编写的时候也出现过这样的问题,我把他改成字节后,就没有出现问题了
作者: 孟伟娟    时间: 2012-12-7 15:09
山下竹岛 发表于 2012-12-6 17:07
doc文档采用的可能是字节流的方式,我在编写的时候也出现过这样的问题,我把他改成字节后,就没有出现问题 ...

哦,这样啊,知道了。谢谢
作者: 倪鹏博    时间: 2012-12-7 15:20
字符流只能操作纯文本文件,比如txt这种!
而doc文件是带格式的字符文件,里面包含了众多的非字符信息,比如表格,图片,字体,颜色等等!
所以不能用字符流去读写!
如果只是复制的话,字节流一样可以达到效果,而且无论文件类型哦!
作者: 7℃洋    时间: 2012-12-9 00:09
用字节流的方式读写就能避免这个错误!
作者: 郭光明    时间: 2012-12-9 11:05
用字节流去读就OK的




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