我有一个名为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的方法
答案 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);
}