2013-02-09 105 views
0

我创建了一个临时文件,写入它覆盖文件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("%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(); 
     } 
+0

[复制](http://stackoverflow.com/questions/9887520/java-create-temp-文件替换原件) – Jayamohan 2013-02-09 02:54:45

+0

什么是错误? – Walfie 2013-02-09 02:56:20

+0

它不会对文件进行更改。我认为这是oldFile =临时;在java中这是合法的吗? – 2013-02-09 02:57:25

回答

1

我想你误会 类java.io.File

的整体概念和不了解的Java变量赋值的概念。

使这一类的对象的java.io.File创建该文件的一种指针,这样就可以用它运行“​​在整个”

所以,你做了什么用“的oldfile =临时”只是让你指向oldFile指向临时指针。但是这只是在Java中的变量赋值的情况下完成的,它对实际的文件系统没有任何影响。

现在关于变量赋值。

与对象把它: 可以说,你有两个整数:

Integer a = 5; 
Integer b = 10; 

通过做“B = A”你不真正改变对象B本身,而是你的参考对象B变对象a的引用。对象b的旧值仍然存储在内存中,但是由于赋值后没有人指向(指向)它,所以它变得不可访问并且最终将被垃圾收集。

现在,关于解决方案本身: 你真的应该由线 逐字节的文件临时的内容复制到旧线),或者如果你只是想使旧文件具有相同的内容和你并不需要临时文件来删除文件,然后将临时文件 重命名为'oldFile'。

下面是如何在Java中使用重命名链接: Renaming in Java

希望这有助于