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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孟伟娟 中级黑马   /  2012-12-6 16:39  /  1903 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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文件时,复制后的文件为一堆乱码,怎么回事,是编码的问题吗?

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

5 个回复

倒序浏览
doc文档采用的可能是字节流的方式,我在编写的时候也出现过这样的问题,我把他改成字节后,就没有出现问题了
回复 使用道具 举报
山下竹岛 发表于 2012-12-6 17:07
doc文档采用的可能是字节流的方式,我在编写的时候也出现过这样的问题,我把他改成字节后,就没有出现问题 ...

哦,这样啊,知道了。谢谢
回复 使用道具 举报
字符流只能操作纯文本文件,比如txt这种!
而doc文件是带格式的字符文件,里面包含了众多的非字符信息,比如表格,图片,字体,颜色等等!
所以不能用字符流去读写!
如果只是复制的话,字节流一样可以达到效果,而且无论文件类型哦!
回复 使用道具 举报
用字节流的方式读写就能避免这个错误!
回复 使用道具 举报
用字节流去读就OK的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马