我需要一个线程安全的方法来自动创建一个新文件并立即锁定它。
使用FileChannel.open()
StandardOpenOption
和CREATE_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()
在这种情况下抛出异常,以便我可以处理它(例如,在文件名中添加一个计数器)。