我一直在搜索,似乎給出的答案只是不適合我。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]
如何我強制這個繼續使用相同的文件,只是附加新行?
謝謝,原來如此! – 2013-04-03 21:52:04