private void writeFile() {
// TODO Auto-generated method stub
boolean f;
int i,j;

try{
File file=new File("123.txt");
if(file.exists()){ja.append("文件存在!"+lineSeparator);}
else{
ja.append("文件不存在!"+lineSeparator);
file.createNewFile();
ja.append("文件创建成功!"+lineSeparator);
} BufferedWriter output = null;
if(iex){
for(i=m;i<=n;i++){
f=true;
for(j=2;j<i-1;j++){
if(i%j==0){f=false;break;}
}
if(f){
 output = new BufferedWriter(new FileWriter(file));
 output.write(""+i+",");
 output.newLine();
 }
}
output.close();
}
else{
ja.append("输入有误!");
}

}catch(Exception e){e.printStackTrace();}

}
上面是其中一段代码,整个代码的功能是,当我输入两个数时,比如1  10,它就会在图形界面显示1-10之间的素数,并在界面上显示,并把结果写到txt文 档中,但当我执行后,在txt文档中,却只有最后一个素数,把前面的素数覆盖了……请指教,非常感谢……

解决方案 »

  1.   


     BufferedWriter output = new BufferedWriter(new FileWriter(file));//在这里创建,不要每找一个素数就创建一个
                if(iex){
                for(i=m;i<=n;i++){
                    f=true;
                    for(j=2;j<i-1;j++){
                        if(i%j==0){f=false;break;}
                    }
                    if(f){
                         output.write(""+i+",");
                         output.newLine();
                         }
                }
      

  2.   

    先将所有的素数全部读出来 用个array或者collection保存,最后一并写入,不要看见一个写一个。IO操作很浪费时间,而且容易出问题。
      

  3.   

    output = new BufferedWriter(new FileWriter(file));改成output = new BufferedWriter(new FileWriter(file, true));试试看呢?这个参数为true的话应该是让这个FileWriter续写得