我在试着:
-Take一个文件(称为list.txt)的内容,修改它并提交到一个临时文件(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();
}
}
我不希望使用delete file方法,但在这一点上,我只想要一个至少可以使用的有效解决方案。
发布于 2019-04-12 03:54:06
有一个“安全保存”的概念,它甚至得到了操作系统的特殊支持(至少在Windows上)。具体步骤如下:
>F29
然后,操作系统将为您应用原始文件的时间戳。在同一磁盘上移动文件是一项非常快速的操作。必要的修改只存在于文件系统结构中。文件内容保留在磁盘上完全相同的位置。
您没有遵循此过程。对我来说,这听起来太复杂了
您尚未说明如何以及何时创建pwriter
。它使用BufferedWriter
吗?什么时候关门?它会被关闭吗?如果不是,你会flush()
它吗?如果是,什么时候?如果不是,这可能是问题的一部分。
https://stackoverflow.com/questions/55639961
复制相似问题