0

所以我的程序中有以下代码。我想要做的是将我在程序 main 中声明的变量打印到 csv 文件中。我想替换 csv 文件中已经存在的内容(该文件在我们到达这部分代码之前就已经存在,所以我们所要做的就是替换已经存在的内容)。现在,我尝试了 (myFoo, false) 但发生的情况是程序遍历 AZ 并在 csv 文件中只留下 Z。我希望它在 csv 文件中写入 AZ 中的所有内容,而不仅仅是 Z 中的内容。

我的代码:

     for(int t=0; t<superArray.size(); t++) {

         String temp = superArray.get(t).character;
         int temp2 = superArray.get(t).quantity;
         int temp3 = superArray.get(t).width;
         String temp4 = superArray.get(t).color;
         int temp5 = superArray.get(t).height;

         String eol = System.getProperty("line.separator");

         String line=temp+","+temp2+","+temp3+","+temp4+","+temp5 + eol;


         File myFoo = new File("Letters.csv");
         FileWriter fooWriter = new FileWriter(myFoo, true); 


         fooWriter.write(line);
         fooWriter.close();

我想尝试的下一件事.. 我想也许我可以做 (myFoo, true) 并且在我写入文件之前,我会清除 csv 文件的原始内容。所以它会附加到一个空的 csv 文件。

         File myFoo = new File("Letter_Inventory.csv");
         myFoo.createNewFile();
         FileWriter fooWriter = new FileWriter(myFoo, true);

逻辑对我来说听起来不错,但这显然行不通,所以我现在在这里。有任何想法吗?谢谢!

4

1 回答 1

0

您将在 for 循环的每次迭代中重新打开和关闭文件!这将覆盖从循环的先前迭代写入文件的任何内容。解决方案是:不要那样做。for 循环之前打开文件一次。

改变

for(int t=0; t<superArray.size(); t++) {

     // ....etc....
     String line=temp+","+temp2+","+temp3+","+temp4+","+temp5 + eol;

     File myFoo = new File("Letters.csv");
     FileWriter fooWriter = new FileWriter(myFoo, true); 


     fooWriter.write(line);
     fooWriter.close();
}

对此

// file created *before* the for loop
File myFoo = new File("Letters.csv");
FileWriter fooWriter = new FileWriter(myFoo, true); 

for(int t=0; t<superArray.size(); t++) {

     // .... etc ....
     String line=temp+","+temp2+","+temp3+","+temp4+","+temp5 + eol;
     fooWriter.write(line); // line written inside for loop

}

// this should be in the finally block.
fooWriter.close();
于 2013-05-05T02:31:09.940 回答