如何在Java中附加到DataOutputStream?

时间:2015-05-12 14:14:40

标签: java append dataoutputstream

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

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

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

此代码不会附加,所以如何追加?

3 个答案:

答案 0 :(得分: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();

希望有所帮助。

答案 1 :(得分:0)

您可以在没有DataOutputStream的情况下实现此目的。 这是一个仅使用FileOutputStream的简化示例:

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

这只会写" String"每次,但你应该明白这一点。

答案 2 :(得分:0)

问题原因是我忘记了我把“filen.delete();”别的地方。

这就是为什么你(我)应该在编码时休息一下:p