2015-05-12 43 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(); 

这将只写“字符串”每次,但你应该明白我的意思。