关于输入输出流 Read和Write 的程序 求高手大侠耐心看下,能帮小弟解惑一把 感激不尽······!!!!

import java.io.*;
public class TestCopy{
public static void main(String[] args){
FileReader fr = null;
FileWriter fw = null;

try{
fr = new FileReader("F:/Book/01.txt");
fw = new FileWriter("F:/Book/02.txt");
int c = 0;

while((c = fr.read())!= -1){ fw.write(c); }
//把fr文件的内容复制到fw文件里。 read()可以写成c=fw.read();但write不可以写成c=fw.write().这样编译出错。

fw.flush();
}catch(FileNotFoundException e){ e.printStackTrace();}
catch(IOException e){ e.printStackTrace();}
finally{
try{
if(null != fw){ fw.close();}
if(null != fr){ fr.close();}
}catch(IOException e){ e.printStackTrace();}
}
}
}

为什么 int c=fr.read() 或 int c=0;c=fr.read()
然后while(c!=-1){ fw.write(c);}不行呢? 这样写 会出现无限复制。

因为你每次读的都是第一个字,没有变过;所以会无限制的读下去。
你可以使用ReadLine() 一行一行的读取,Read()返回的是int 类型的

c=fw.Writer():这种是错误的,Writer()方法返回类型是Void追问

能再说的详细点吗 高手 呵呵 我菜鸟
int c = 0;
c = fr.read();
while(c != -1){ } 这样写每次读都是第一个字不会变吗? c.read()不是会依次读出来么?Readline就先不弄 咱太笨了 这个还没明白 想把这个先搞明白 感激·····

追答

你可以在那句代码上加个断点,调试一下,就知道了

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-02
它有一个readLine()这个方法, 这个方法可以提高字符输入流的效率, 每次读取一行, 肯定比每次读一字符效率高很多吧? 注意看它的构造器,就是可以把 一些
相似回答
大家正在搜