我试着:
- 获取文件的内容(称为list.txt),修改它并提交到tempfile(listtemp.txt)。
-Clear list.txt,将listtemp.txt的新内容打印到list.txt中,然后清除listtemp.txt以进一步修改list.txt
问题是,当我在listtemp.txt中有适当的内容时,我无法获取新内容并将其放在list.txt中。我成功清除了列表,但后来我无法使用PrintWriter追加或写入列表。
我已经尝试使用FileWriter清除list.txt,将参数设置为false以清除它,然后关闭FileWriter,并使用我用来打印/直接附加到list.txt的原始PrintWriter。
我已经尝试完全删除list.txt,然后重新创建它,然后使用原始PrintWriter再次打印/追加,直接打印/追加文本文件。
如前所述,我修改了list.txt并将其成功放入listtemp.txt。然后我尝试创建一个swapListing()方法来清除list.txt并添加listtemp.txt的内容。
private void swapListing() {
FileWriter fw = null; //This is the temporary FileWriter to clear the text file
try {
fw = new FileWriter(main.file, false); //Main list is cleared.
fw.close();
fw = null;
} catch (IOException e) {
e.printStackTrace();
}
try {
String temp = main.getReader().readFile(main.filetemp); //I got the contents of the String from my listtemp.txt, and I checked, and the String is successfully retrieved, so this isn't the problem.
pwriter.print(temp); // This is where I feel like file SHOULD be appended
} catch(Exception e) {
e.printStackTrace();
}
}
我也尝试删除该文件,但该文件实际上并未删除,原始内容实际上仍然在文件中。
private void clearFile() {
if (main.file.exists()) {
main.file.delete();
try {
main.file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
String temp = main.getReader().readFile(main.filetemp);
pwriter.print(temp);
} catch(Exception e) {
e.printStackTrace();
}
}
我不想使用删除文件方法,但此时我只想要一个至少可以使用的工作解决方案。
有一个“安全保存”的概念,甚至还有操作系统的特殊支持(至少在Windows上)。程序是:
然后,操作系统将为您应用原始文件的时间戳。在同一磁盘上移动文件是一种非常快速的操作。必要的修改仅在文件系统结构中。文件内容保留在磁盘上的完全相同的位置。
您没有遵循此程序。对我来说,听起来过于复杂
您还没有说明如何以及何时创建pwriter
。它是否使用BufferedWriter
?什么时候关闭?它完全关闭了吗?如果没有,你flush()
吗?如果是的话,何时?如果没有,那可能是问题的一部分。