2015-05-12 80 views
6

我希望我的程序將URL地址一次保存到一個文件中。 這些地址需要以UTF格式保存以確保它們是正確的。如何在Java中追加到DataOutputStream?

我的問題是,該文件被覆蓋的時候,而不是附加:

DataOutputStream DOS = new DataOutputStream(new FileOutputStream(filen, true)); 
    Count = 0; 
    if (LinkToCheck != null) { 
    System.out.println(System.currentTimeMillis() + " SaveURL_ToRelatedURLS d "+LinkToCheck.Get_SelfRelationValue()+" vs "+Class_Controller.InterestBorder); 
    if (LinkToCheck.Get_SelfRelationValue() > Class_Controller.InterestBorder) { 
     DOS.writeUTF(LinkToCheck.Get_URL().toString() + "\n"); 
     Count++; 
    } 
    } 
    DOS.close(); 

這個代碼不追加,讓我怎麼讓它追加?

+0

'filen'如何初始化? – Dude

+2

我測試了你的代碼,我能夠追加。也許你可以分享更多關於你如何調用它的信息? –

回答

0

問題原來是我忘了把「filen.delete();」別的地方。

這就是爲什麼你(I)在編碼時應該休息一下:p

1

您實際上不應該在每次迭代時都保持流打開並寫入。爲什麼不簡單地創建一個包含所有信息的字符串並在最後寫入?

例子:

DataOutputStream DOS = new DataOutputStream(new FileOutputStream(filen, true)); 
int count = 0; // variables should be camelcase btw 
StringBuilder resultBuilder = new StringBuilder(); 
if (LinkToCheck != null) { 
    System.out.println(System.currentTimeMillis() + "SaveURL_ToRelatedURLS d "+LinkToCheck.Get_SelfRelationValue()+" vs "+Class_Controller.InterestBorder); 

    if (LinkToCheck.Get_SelfRelationValue() > Class_Controller.InterestBorder) { 
     resultBuilder.append(LinkToCheck.Get_URL().toString()).append("\n"); 
     count++; 
    } 
} 
DOS.writeUTF(resultBuilder.toString()); 
DOS.close(); 

希望有所幫助。

0

無需Dat​​aOutputStream即可實現此功能。 這裏只用FileOutputStream中一個簡單的例子:

String filen = "C:/testfile.txt"; 
FileOutputStream FOS = new FileOutputStream(filen , true); 
FOS.write(("String" + "\r\n").getBytes("UTF-8")); 
FOS.close(); 

這將只寫「字符串」每次,但你應該明白我的意思。