java初学者提问: 下面这个小程序是什么问题 为什么被写入的a.txt巨大无比而不是1.txt里的内容

2025-02-24 05:43:31
推荐回答(3个)
回答1:

代码的问题啊。
看看
fw = new FileWriter("a://java//1//a.txt");
b = fr.read(); 读取第一字符 执行一次fr.read()方法读取一个字符。读全文需要循环执行的。

while(b!= -1){
fw.write(b); 把b写入文件 但是有没有读取新的b的值。b就没有变化一直都是最初的不是-1的值。这样会不停的向文件a.txt写入第一个字符的。

}
fr.close();
fw.close();
这样写的结果是读取第一个字符并且将字符不停的循环写入文件。
正确的写法
fw = new FileWriter("a://java//1//a.txt");
b=2;
while(b!= -1){
b = fr.read();
fw.write(b);
}
fr.close();
fw.close();

或者
fw = new FileWriter("a://java//1//a.txt");
while((b = fr.read())!= -1){
fw.write(b);
}
fr.close();
fw.close();

都行。

回答2:

b = fr.read();
while(b!= -1){
fw.write(b);
}
这段有问题,你只读了第一个数,是个死循环,所以写的文件特别大
改为
b = fr.read();
while(b!= -1){
fw.write(b);
b=fr.read();//每写一个后需要再读下一个
}

回答3:

while循环的地方出问题了,你的b!=-1这个条件一直是true,这是个死循环,你得读一次判断一次
while(b!= -1){
fw.write(b);
b=fr.read();//这样b的值才会变化
}
源程序里的b读了一次就不在变化了,所以是个死循环