gpt4 book ai didi

java - 如果文件存在,PrintWriter 追加数据

转载 作者:行者123 更新时间:2023-11-30 06:18:11 25 4
gpt4 key购买 nike

我有一个名为 mysave.sav 的游戏存档文件,如果该文件已经存在,我想向该文件添加数据。如果文件不存在,我想创建文件,然后添加数据。

添加数据工作正常。但是附加数据会覆盖现有数据。我在这里遵循了 axtavt 的说明 ( PrintWriter append method not appending )。

    String savestr = "mysave.sav"; 
File f = new File(savestr);
PrintWriter out = new PrintWriter(savestr);

if ( f.exists() && !f.isDirectory() ) {
out = new PrintWriter(new FileOutputStream(new File(savestr), true));
out.append(mapstring);
out.close();
}
else {
out.println(mapstring);
out.close();
}

其中 mapstring 是我要附加的字符串。你能帮助我吗?谢谢!

最佳答案

调用 PrintWriter out = new PrintWriter(savestr); 后,如果文件不存在,则会创建该文件,因此首先检查文件是否存在,然后对其进行初始化。

如其 Constructor Docmentation 中所述以及说:

If the file exists then it will be truncated to zero size; otherwise, a new file will be created.

由于文件是在调用 f.exists() 之前创建的,因此它将始终返回 true 并且根本不会执行 ìf block 。

示例代码:

String savestr = "mysave.sav"; 
File f = new File(savestr);

PrintWriter out = null;
if ( f.exists() && !f.isDirectory() ) {
out = new PrintWriter(new FileOutputStream(new File(savestr), true));
}
else {
out = new PrintWriter(savestr);
}
out.append(mapstring);
out.close();

为了更好地处理资源,请使用 Java 7 - The try-with-resources Statement

关于java - 如果文件存在,PrintWriter 追加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24982744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com