1

我有一个名为 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

4 回答 4

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

于 2013-08-05T00:40:08.530 回答
1

RandomAccessFile 并非旨在替换 File 类。

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

请使用 File 类进行重命名。

于 2013-05-15T02:43:11.840 回答
1

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

于 2013-05-15T02:53:31.027 回答
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);
}
于 2017-06-18T05:13:36.977 回答