gpt4 book ai didi

java - 在我的代码中覆盖文件 java 时出错

转载 作者:行者123 更新时间:2023-12-01 14:51:37 24 4
gpt4 key购买 nike

我创建了一个临时文件,并将其写入其中,并且我想覆盖现有文件

  1. 创建临时文件
  2. 填满
  3. 打开旧文件
  4. 将旧文件设置为与新文件相同

这是我的代码,但它不起作用

如果您能找到问题,请告诉我。谢谢!

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("%s\n", 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 的旧值仍然存储在内存中,但由于赋值后没有人指向(引用)它,因此它变得不可访问,最终将被垃圾收集。

现在关于解决方案本身:您确实应该将文件 temp 的内容逐行复制到旧文件中逐字节)或者如果您只是想让旧文件具有相同的内容,并且您实际上并不需要临时文件,只需删除该文件,然后重命名该临时文件为“oldFile”。

这里是如何在java中使用重命名的链接: Renaming in Java

希望这有帮助

关于java - 在我的代码中覆盖文件 java 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14784453/

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