重命名RandomAccessFile

时间:2013-05-15 02:39:57

标签: java file-rename randomaccessfile

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

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

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

我已经看到了一些关于使用.renameTo()重命名文件的东西,但这确实适用于RandomAccessFile。我无法找到任何类似RAF的方法

4 个答案:

答案 0 :(得分:1)

RandomAccessFile并非旨在替换File类。

它旨在允许或多或少地阅读写作。

请使用File类进行重命名。

答案 1 :(得分:1)

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

答案 2 :(得分: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

答案 3 :(得分: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);
}