在java中创建一个新创建的文件也是不可读的

时间:2013-01-30 14:26:05

标签: java linux permissions

您好我在java中使用File类来编写一个包含超过100,000行信息​​的txt文件。我在fedora linux上。在写入文件时,我不希望在完全完成之前允许它被读取。

我想在设置文件之前设置setReadable(false)然后在结束时设置为true会起作用但是没有人知道我怎么能正确地做到这一点

谢谢。

2 个答案:

答案 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实现该功能。它允许您在单个事务中写入文件。在提交之前,您的基本文件甚至不存在

但你也可以单独做到这一点。将文件写在别处并在完成后移动