java - 如何 append 到 Java 中的 DataOutputStream?

标签 java append dataoutputstream

我希望我的程序一次保存一个 URL 地址到一个文件中。 这些地址需要以 UTF 格式保存以确保它们是正确的。

我的问题是文件一直被覆盖,而不是 append :

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

此代码不追加,那么如何让它追加?

最佳答案

您实际上不应该保持流打开并在每次迭代时写入。为什么不简单地创建一个包含所有信息的字符串并将其写在最后呢?

例子:

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

希望对您有所帮助。

关于java - 如何 append 到 Java 中的 DataOutputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30193520/

相关文章:

java - 将用于跳过缺失信息的正则表达式从 python 转换为 java-7

c++ - C++ 中随机位置的二进制输出到文件

c - C中的链表实现(只打印最后两个节点)

java - 如何将元素添加到数组列表中?

Java:如何在 Java 中使用整数对?

java - 作为文件写入的 Log4j2 系统属性

list - Haskell:从后面访问列表

java - DataOutputStream#writeBytes(String) 与 BufferedWriter#write(String)

java - DataOutputStream: "encoded string too long"限制的目的

java - 为什么 DataOutputStream.writeUTF() 在开头添加额外的 2 个字节?