2013-05-15 28 views
1

我有一个名为data.bin的RAF和一个名为temp.bin的临时RAF。重命名一个RandomAccessFile

 data = new RandomAccessFile("data.bin","rws"); 
     temp = new RandomAccessFile("temp.bin","rws"); 

临时文件基本上是data.bin文件,但我改变了它的信息。所以一旦我完成修改临时文件,我如何将temp.bin的名称更改为data.bin并删除旧的data.bin?

我看过一些关于使用.renameTo()重命名文件的东西,但是它适用于RandomAccessFile。并且我找不到任何类似于RAF的方法

回答

1

RandomAccessFile不是用来替换File类的。

它被设计成只允许阅读一篇文章或多或少。

请使用File类进行重命名。

+0

这样做,我只是做? \t \t \t \t File fdata = new File(“data.bin”); File ftemp = new File(“temp.bin”); ftemp.renameTo(fdata); ftemp.delete(); – MadeInJapan

+0

如果你重命名它,我认为不需要删除。 – Thihara

1

关闭RAF并使用java.nio.file.Files.move重命名临时文件。 File.renameTo有一个退步。如果它不能重命名文件,你永远不会知道为什么,因为它只是返回true或false。如果失败,Files.move抛出IOException。

1

我有同样的问题。 我做了这样的事情:

data.close(); 
temp.close(); 
File tempfile = new File("c:/.../temp.bin"); 
File datafile = new File("c:/.../data.bin"); 
tempfile.renameTo(datafile); 

欲了解更多信息:http://www.tutorialspoint.com/java/io/file_renameto.htm

+0

在将'temp'重命名为它之前,是否需要删除数据文件? –

+0

我不这么认为,但是这段代码在这里停止工作.-。 我现在是cofuse。它说文件没有关闭,但我关闭了data.close()和temp.close()...我试图关闭通道,但没有任何改变。 现在我需要帮助,也kkkkk –

0

RandomAccessFile的目的是读取/写入信息。要处理文件名,存在等,您必须使用File类。

在你的情况,你应该做这样的事情:

File d = new File("data"); // Declare your data RAF through File 
RandomAccessFile data = new RandomAccessFile(d,"rws"); 

public void foo(){ 
    File t = new File("temp"); // Declare your temp RAF through File 
    RandomAccessFile temp = new RandomAccessFile(t,"rws"); 
    //TODO data RAF alteration 
    data.close(); 
    d.delete(); //First delete data File, just in case 
    temp.close(); 
    File f = new File("data"); 
    t.renameTo(f); 
}