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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jaijaiok 中级黑马   /  2013-12-9 01:30  /  1469 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static void show1() throws Exception {
  2.                 FileReader fr = null;
  3.                 FileWriter fw = null;

  4.                 try {
  5.                         fr = new FileReader("f:\\2013\\demo.java");
  6.                         fw = new FileWriter("f:\\2013\\demo1.java");
  7.                         char[] bur = new char[1024];
  8.                         int len;
  9.                         while (-1 != (len = fr.read(bur))) {
  10.                                 fw.write(bur, 0, len);
  11.                         }
  12.                 } catch (RuntimeException e) {
  13.                         // TODO Auto-generated catch block
  14.                         e.printStackTrace();
  15.                 } finally {
  16.                         if (fr != null)
  17.                                 fr.close();
  18.                         if (fw != null)
  19.                                 fw.close();
  20.                 }

  21.         }
复制代码
为什么复制出的文件打开后汉字是乱码呢!难道用的码表不同?

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

5 个回复

倒序浏览
测试后,代码是正确的,复制后不存在乱码问题
回复 使用道具 举报
char[] bur = new char[1024];
改成byte[] bur = new byte[1024];字节流是自定义byte缓冲区,而不是字节数组缓冲区
回复 使用道具 举报
用字节流读包含中文的文件出现乱码是不可避免的,简单的想想:单第一个字为英文,第二个子为中文,而一个英文占1一个字节,一个中文占两个字节,当你用两个字节的的数组读取,中文字就会被拆分,这样就肯定会出现乱码。

评分

参与人数 1技术分 +1 收起 理由
贺奕凯 + 1

查看全部评分

回复 使用道具 举报
哪有可能你那 文件中 前两个字符是“联通”,或者是用utf—8可以解析的文字
回复 使用道具 举报
出现乱码也就是   恰好你只读到了 半个中文  然后出现了一半  
这个字符流是没办法避免的  如果一定要是字符流  可以尝试换下 字符编码 换UTF-8
还有一种办法是用高效流  一行一行的读写
BufferedWriter bw =new BufferedWriter(new  FileWriter ("f:\\2013\\demo.java"));
BufferedReader br =new BufferedReader (new  FileWriter("f:\\2013\\demo1.java"));
String line =null;
while((line=bw.readLine())!=null){
  bw.newLine();
  bw.write(line);
  bw.fulsh();
}
bw.close();
br.close();
这样就好了!

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马