2013-04-03 43 views
0

我一直在搜索,似乎給出的答案只是不適合我。java - Filewriter無法獲得「追加模式」爲我工作

我的代碼是相對簡單的,它生成對象的陣列,其中一些隨機串填充它,然後嘗試輸出到文件。這個想法基本上是生成一個包含一些名稱,登錄名,密碼等的CSV文件,並且名稱是隨機字母串(長話短說,它用於大量填充用戶的環境...)

I有一個「作家」類像這樣:

public class Writer { 
    public static void log(String message) throws IOException { 

    PrintWriter out = new PrintWriter(new FileWriter("testlog.txt"), true); 
    out.println(message); 

    out.close(); 
} 
} 

和循環是這樣的:

for (int y=0; y < num_names; y++) { 
      try { 
      Writer.log(arrayTest[y].first + "," + arrayTest[y].last + "," +  arrayTest[y].loginName + "," + arrayTest[y].password + 
        "," + arrayTest[y].email); 
     } catch (IOException ex) { 
      Logger.getLogger(Csvgenerator.class.getName()).log(Level.SEVERE, null, ex); 
     } 


    System.out.println(arrayTest[y].first + "," + arrayTest[y].last + "," + arrayTest[y].loginName + "," + arrayTest[y].password + 
      "," + arrayTest[y].email);  

} 

我意料的是,我會遍歷併爲ArrayTest [] I輸出一行的每個對象的數據到文件。 我包含System.out.println只是爲了調試。

當我運行我的代碼,該證明的System.out.println它正常工作 - 我得到的10行的列表。 (num_names = 10這裏),這證明每次我到這行代碼,我有一個獨特的「行」的數據打印出來。

然而,在運行結束時,文件「testlog.txt」只包含一行 - 在最後一行在我的輸出。

我試過「out.append」而不是「out.println」,但沒有區別。看起來好像每次我調用記錄器都會因爲某種原因重新創建文件。

因此,換句話說,如果我的控制檯輸出(從的System.out.println)看起來是這樣的:

nxoayISPaX,aNQWbAjvWE,nanqwbajvwe,[email protected]!,[email protected] 
RpZDZAovgv,QOfyNRtIAN,rqofynrtian,[email protected]!,[email protected] 
SajEwHhfZz,VziPeyXmAc,svzipeyxmac,[email protected]!,[email protected] 
sifahXTtBx,MRmewORtGZ,smrmewortgz,[email protected]!,[email protected] 
PlepqHzAxE,MQUJsHgEgy,pmqujshgegy,[email protected]!,[email protected] 
VKYjYGLCfV,nuRKBJUuxW,vnurkbjuuxw,[email protected]!,[email protected] 
YgvgeWmomA,ysKLVSZvaI,yysklvszvai,[email protected]!,[email protected] 
feglvfOBUX,UTIPxdEriq,futipxderiq,[email protected]!,[email protected] 
RAQPPNajxR,vzdIwzFHJY,rvzdiwzfhjy,[email protected]!,[email protected] 
DeXgVFClyg,IEuUuvdWph,dieuuuvdwph,[email protected]!,[email protected] 

然後testlog.txt只包含一行:

DeXgVFClyg,IEuUuvdWph,dieuuuvdwph,[email protected]!,[email protected] 

如何我強制這個繼續使用相同的文件,只是附加新行?

回答

3

在構造PrintWriter(Writer out, boolean autoFlush),第二個boolean變量實際上是自動沖洗,不追加模式。

我想你打算用FileWriter(File file, boolean append)構造來代替,即:中

PrintWriter out = new PrintWriter(new FileWriter("testlog.txt", true)); 

代替

PrintWriter out = new PrintWriter(new FileWriter("testlog.txt"), true); 
+0

謝謝,原來如此! – 2013-04-03 21:52:04