2013-05-05 49 views
0

所以我在我的程序中有以下代碼。我想要做的是將我在main程序中聲明的變量打印到csv文件中。我想替換已經在csv文件中的文件(在我們到達這部分代碼之前,文件已經存在,所以我們只需要替換已經存在的文件)。現在,我嘗試了(myFoo,false),但是會發生什麼情況是程序通過A-Z進行迭代,並且只在csv文件中保留Z.我希望它寫一切從AZ CSV文件,而不僅僅是什麼是Z.FileWriter false將文件從字符串A覆蓋到Z但僅保留字符串Z;我該如何保留字符串A-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); 

邏輯聽起來不錯,但顯然沒有工作,所以我現在在這裏。有任何想法嗎?謝謝!

回答

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(); 
+0

這做到了。我只需將true改爲false,以便覆蓋而不是追加。謝謝! – harshm0de 2013-05-05 03:11:00

+0

@ harshm0de:不客氣! – 2013-05-05 03:51:05

相關問題