![](/img/trans.png)
[英]Renaming file after it has been opened as a RandomAccessFile and mapped as a MappedByteBuffer
[英]Renaming a 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的方法
RandomAccessFile并非旨在替换File类。
它旨在允许或多或少地阅读写作。
请使用File类进行重命名。
关闭RAF并使用java.nio.file.Files.move重命名临时文件。 File.renameTo有一个缺点。 如果它无法重命名该文件,您将永远不知道为什么,因为它只返回true或false。 如果失败,Files.move会抛出IOException。
我有同样的问题。 我做了这样的事情:
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
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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.