我已经创建了一个临时文件,写入其中,我想覆盖现有的文件
- 创建临时文件
- 加满油
- 打开旧文件
- 将旧文件设置为等于新文件
这是我的代码,但它不工作
如果你能找到问题,请告诉我。非常感谢。
try{
//create a temporary file
File temporary=File.createTempFile("tmp", "");
BufferedWriter writer = new BufferedWriter(new FileWriter(temporary));
//Write each line to file (temporary)
for (String string : parsedArticlesToSave) {
writer.write (String.format("%sn", string));
}
//load old file
File oldFile = new File("StringFile/ArticlesDB.txt");
//replace old file with new file
oldFile=temporary;
//release resources
writer.close();
}catch(Exception e){
e.printStackTrace();
}
我认为你误解了类的整个概念java.io.File
并且不理解Java中变量赋值的概念。
使这个类的对象java.io.File在文件上创建一种指针,这样您就可以使用它进行操作"总体上";
所以,你所做的"oldFile=temporary"只是让你的指针指向oldFile,指向临时文件。但这只是在Java中变量分配的上下文中完成的,它对实际的文件系统没有任何影响。
现在讨论变量赋值。
将其与对象一起使用:假设你有两个整数:
Integer a = 5;
Integer b = 10;
通过执行"b=a",您实际上并没有更改对象b本身,而是您对对象b的引用变成了对对象a的引用。对象b的旧值仍存储在内存中,但由于在赋值后没有人指向(引用)它,它变得不可访问,最终将被垃圾收集。
现在,关于解决方案本身:您真的应该一行一行地将临时文件的内容复制到旧文件中逐字节),或者如果您只是想使旧文件具有相同的内容,而实际上不需要临时文件来删除文件,然后重命名临时文件为"oldFile"。
以下是如何在java中使用rename的链接:Java 中的重命名
希望这能帮助