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

importjava.io.*;publicclassTestCopy{publicstaticvoidmain(String[]args){intb=0;FileRea... import java.io.*;
public class TestCopy{
public static void main(String[] args){
int b = 0;
FileReader fr = null;
FileWriter fw = null;
try{
fr = new FileReader("a://java//1//2.txt");
fw = new FileWriter("a://java//1//a.txt");
b = fr.read();
while(b!= -1){
fw.write(b);
}
fr.close();
fw.close();
}
catch(FileNotFoundException e){
System.out.println("未找到文件");
}
catch(IOException e1){
System.out.println("文件读写错误");
}
System.out.println("文件已copy");
}
}
展开
 我来答
llei32wang
2012-10-27 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1404万
展开全部
代码的问题啊。
看看
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();

都行。
artintin
2012-10-27 · TA获得超过1.2万个赞
知道大有可为答主
回答量:7508
采纳率:80%
帮助的人:2868万
展开全部
b = fr.read();
while(b!= -1){
fw.write(b);
}
这段有问题,你只读了第一个数,是个死循环,所以写的文件特别大
改为
b = fr.read();
while(b!= -1){
fw.write(b);
b=fr.read();//每写一个后需要再读下一个
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxp3126248
2012-10-27 · 超过10用户采纳过TA的回答
知道答主
回答量:36
采纳率:100%
帮助的人:21.8万
展开全部
while循环的地方出问题了,你的b!=-1这个条件一直是true,这是个死循环,你得读一次判断一次
while(b!= -1){
fw.write(b);
b=fr.read();//这样b的值才会变化
}
源程序里的b读了一次就不在变化了,所以是个死循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式