【发布时间】:2013-09-18 06:20:34
【问题描述】:
我开发了一个 java 程序,它使用 asynchronousFileChannel 将数据写入文件(临时文件)。
现在每次向文件写入条目时,都会调用第二个方法,该方法将检查其大小,如果其大小超过预阈值大小,例如 10000 字节,则应将所有文件内容移动到不同的文件(永久数据记录) .
我应该使用什么,以便在将数据从临时文件移动到永久文件时不会丢失任何数据,而临时文件仍被不同的线程访问。
【问题讨论】:
-
使用另一个文件进行写入(例如:tempFileA、tempFileB)。移动第一个文件,同时继续写入第二个文件。
-
大多数操作系统会在文件打开以进行写入时锁定文件,并且在解锁之前您无法将其移动到其他位置。完成写入文件后,您可以检查大小并相应地移动它。
-
我可以通过检查字节来处理锁定,方法与我使用异步文件通道的方法相同,但无法找到移动文件的适当方法,同时删除临时文件的内容已移至永久文件。
标签: java asynchronous file-move