黑马程序员技术交流社区
标题:
IO 初级一段错误代码?
[打印本页]
作者:
springing
时间:
2014-7-24 13:17
标题:
IO 初级一段错误代码?
try{
FileWriter f3 = new FileWriter("d://123.txt");
FileReader fr = new FileReader("d://fw.txt");
int m = 0;
while((m =fr.read())!= -1){
f3.write(fr.read());
}
f3.close();
fr.close();
} catch (IOException e ){
e.printStackTrace();
}
这段代码错在哪?为什么复制的文件不和那个一样?
作者:
shijianws
时间:
2014-7-24 13:34
你用字符流了,想要复制文件用字节流,如果文本可以用字符流,而且要去指定字符编码
作者:
shijianws
时间:
2014-7-24 13:42
字符流还需要刷新缓存吧
作者:
吴杰栋
时间:
2014-7-24 14:16
楼主,while循环中的读没错,但是在写的时候,写入的是你定义的m变量,那fr.read()改成m就好了,读取文本文件用这个字符流没事的
作者:
吴杰栋
时间:
2014-7-24 14:19
shijianws 发表于 2014-7-24 13:42
字符流还需要刷新缓存吧
楼主这边根本就没使用缓冲区,何来的刷新缓存?
作者:
liuniansis
时间:
2014-7-24 14:33
每次执行read()方法的时候,指针都会向后移动一位,这样的话,比如你原来的文件是abcdefg
循环条件里执行一次,读到了a,但是这里还没有写,然后你代码里又执行了一次read(),指针就停在了b上,此时你写入的时候,就会跳过a,直接将b写到新的文件中,所以写入的时候不应该使用fr.read();因为循环条件的语句,已经将读取到的字符存入到了m中,只要将m写入文件即可
作者:
springing
时间:
2014-7-24 14:37
是的。。。有时候看代码看进去了,就是看不出错在哪里。回个头再看 错误就这么明显
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2