0

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

我认为在写入文件之前设置 setReadable(false) 然后最后将其设置为 true 会起作用,但没有人知道我如何正确地做到这一点

谢谢你。

4

2 回答 2

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 上的原子操作。

于 2013-01-30T14:28:58.597 回答
1

您应该使用来自 Apache 的事务来实现它。它允许您在单个事务中写入文件。在您提交之前,您的基本文件甚至都不存在

但你也可以独自完成。将您的文件写入其他位置并在完成后将其移动

于 2013-01-30T14:30:17.083 回答