0

我创建了一个临时文件,写入它,我想覆盖现有文件

  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();
        }
4

1 回答 1

1

我认为您误解了类 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 中使用 rename 的链接: Renaming in Java

希望这可以帮助

于 2013-02-09T04:55:17.150 回答