黑马程序员技术交流社区

标题: 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