【发布时间】:2013-01-14 09:44:51
【问题描述】:
您好,我正在使用 java 中的 File 类来编写一个包含超过 100,000 行信息的 txt 文件。我在fedora linux上。在写入文件时,我不希望在完全完成之前读取它。
我认为在写入文件之前设置 setReadable(false) 然后最后将其设置为 true 会起作用,但没有人知道我该如何正确地做到这一点
谢谢。
【问题讨论】:
标签: java linux permissions
您好,我正在使用 java 中的 File 类来编写一个包含超过 100,000 行信息的 txt 文件。我在fedora linux上。在写入文件时,我不希望在完全完成之前读取它。
我认为在写入文件之前设置 setReadable(false) 然后最后将其设置为 true 会起作用,但没有人知道我该如何正确地做到这一点
谢谢。
【问题讨论】:
标签: java linux permissions
使用 .tmp 扩展名编写它,然后在完成后将其移动/重命名为真正的扩展名
final File file = new File(filename + ".tmp");
// code to save the text to the file
file.renameTo(new File(filename+ ".txt"))
.renameTo 是 linux 上的原子操作。
【讨论】:
您应该使用transactions from Apache 来实现它。它允许您在单个事务中写入文件。在您提交之前,您的基本文件甚至都不存在
但您也可以单独完成。将文件写入其他位置并在完成后将其移动
【讨论】: