原子文件创建和锁定

时间:2018-03-02 10:15:25

标签: java file locking atomic

我需要一个线程安全的方法来自动创建一个新文件并立即锁定它。

使用FileChannel.open() StandardOpenOptionCREATE_NEW的方法WRITE以原子方式完成创建部分。但是,lock()方法不会在相同的"交易"中调用。

例如,如果

FileChannel.open(Paths.get("log.txt"),StandardOpenOption.CREATE_NEW,
    StandardOpenOption.WRITE).lock()

new FileWriter("log.txt").write("Hello world")

同时执行,可能会发生文件log.txt是通过open()创建的,但只有在写操作之后才会获取锁。 我需要open()在这种情况下抛出异常,以便我可以处理它(例如,在文件名中添加一个计数器)。

0 个答案:

没有答案