如何附加到 Java 中的 DataOutputStream?
How to append to DataOutputStream in Java?
我希望我的程序将 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();
此代码不会追加,那么我该如何追加呢?
您实际上不应该保持流打开并在每次迭代时写入。为什么不简单地创建一个包含所有信息的字符串并将其写在最后呢?
示例:
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();
希望对您有所帮助。
您可以在没有 DataOutputStream 的情况下实现此目的。
这是一个仅使用 FileOutputStream 的简化示例:
String filen = "C:/testfile.txt";
FileOutputStream FOS = new FileOutputStream(filen , true);
FOS.write(("String" + "\r\n").getBytes("UTF-8"));
FOS.close();
每次都会写"String",不过你应该明白了。
问题原来是我忘了把"filen.delete();"放在别的地方了。
这就是为什么你(我)应该在编码时休息 :p
我希望我的程序将 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();
此代码不会追加,那么我该如何追加呢?
您实际上不应该保持流打开并在每次迭代时写入。为什么不简单地创建一个包含所有信息的字符串并将其写在最后呢?
示例:
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();
希望对您有所帮助。
您可以在没有 DataOutputStream 的情况下实现此目的。 这是一个仅使用 FileOutputStream 的简化示例:
String filen = "C:/testfile.txt";
FileOutputStream FOS = new FileOutputStream(filen , true);
FOS.write(("String" + "\r\n").getBytes("UTF-8"));
FOS.close();
每次都会写"String",不过你应该明白了。
问题原来是我忘了把"filen.delete();"放在别的地方了。
这就是为什么你(我)应该在编码时休息 :p