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



我已经创建了一个临时文件,写入其中,我想覆盖现有的文件

  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("%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 中的重命名

希望这能帮助

相关内容

  • 没有找到相关文章

最新更新