为了确保在处理过程中没有修改/删除java.io.File,我想在与原始文件不同的目录(例如系统临时目录)中创建一个临时文件
我需要原始文件的信息,因为文件信息有很多访问权限,例如文件夹结构,文件名和文件扩展名。使用临时文件会破坏此信息。
不幸的是,不可能只设置文件的名称/目录,因为这会重命名/移动文件。
替代方法:也可以处理这两个文件,从源文件中获取信息并从临时文件中读取内容,但这似乎不是执行此操作的最佳方式。 / p>
有更好的方法吗?
祝你好运 马丁
答案 0 :(得分:0)
我建议您使用java.io.File.createTempFile(String, String, File)并使用java.io.File.deleteOnExit();该文件必须是用户可访问的 - 否则用户无法写入该文件(QED)。也就是说,尝试这样的事情 -
try {
File directory = new File("/tmp"); // or C:/temp ?
File f = File.createTempFile("base-temp", ".tmp", directory); // create a new
// temp file... with a prefix, suffix and in a tmp folder...
f.deleteOnExit(); // Remove it when we exit (you can still explicitly delete when you're done).
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
听起来你想要做的就是在你阅读文件时阻止对文件的任何修改。这通常通过锁定文件来完成,这样只有您的进程才能访问它。作为示例(使用java.nio中的FileLock)
try{
File file = new File("randomfile.txt");
FileChannel channel = new RandomAccessFile(file, "rw").getChannel();
FileLock lock = channel.lock();//Obtain a lock on the file
try{
//Do your things
}
finally{
lock.release();//Release the lock on the file
channel.close();
}
}
catch (IOException e) {
e.printStackTrace();
}