黑马程序员技术交流社区
标题:
关于字符流的问题
[打印本页]
作者:
jaijaiok
时间:
2013-12-9 01:30
标题:
关于字符流的问题
public static void show1() throws Exception {
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("f:\\2013\\demo.java");
fw = new FileWriter("f:\\2013\\demo1.java");
char[] bur = new char[1024];
int len;
while (-1 != (len = fr.read(bur))) {
fw.write(bur, 0, len);
}
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (fr != null)
fr.close();
if (fw != null)
fw.close();
}
}
复制代码
为什么复制出的文件打开后汉字是乱码呢!难道用的码表不同?
作者:
做个有理想的人
时间:
2013-12-9 08:56
测试后,代码是正确的,复制后不存在乱码问题
作者:
┾——黑马
时间:
2013-12-9 09:20
char[] bur = new char[1024];
改成byte[] bur = new byte[1024];字节流是自定义byte缓冲区,而不是字节数组缓冲区
作者:
史超
时间:
2013-12-9 09:34
用字节流读包含中文的文件出现乱码是不可避免的,简单的想想:单第一个字为英文,第二个子为中文,而一个英文占1一个字节,一个中文占两个字节,当你用两个字节的的数组读取,中文字就会被拆分,这样就肯定会出现乱码。
作者:
hel
时间:
2013-12-9 13:17
哪有可能你那 文件中 前两个字符是“联通”,或者是用utf—8可以解析的文字
作者:
Crist
时间:
2013-12-9 16:12
出现乱码也就是 恰好你只读到了 半个中文 然后出现了一半
这个字符流是没办法避免的 如果一定要是字符流 可以尝试换下 字符编码 换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();
这样就好了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2