您好我在java中使用File类来编写一个包含超过100,000行信息的txt文件。我在fedora linux上。在写入文件时,我不希望在完全完成之前允许它被读取。
我想在设置文件之前设置setReadable(false)然后在结束时设置为true会起作用但是没有人知道我怎么能正确地做到这一点
谢谢。
答案 0 :(得分:1)
以.tmp扩展名编写,然后在完成后将其移动/重命名为实际扩展名
final File file = new File(filename + ".tmp");
// code to save the text to the file
file.renameTo(new File(filename+ ".txt"))
.renameTo是linux上的一个原子动作。
答案 1 :(得分:1)
您应该使用transactions from Apache实现该功能。它允许您在单个事务中写入文件。在提交之前,您的基本文件甚至不存在
但你也可以单独做到这一点。将文件写在别处并在完成后移动