我试图在
Java中实现以下操作,我不知道如何:
/* * write data (Data is defined in my package) * to a file only if it does not exist,return success */ boolean writeData(File f,Data d) { FileOutputStream fos = null; try { fos = atomicCreateFile(f); if (fos != null) { /* write data here */ return true; } else { return false; } } finally { fos.close(); // needs to be wrapped in an exception block } }
是否存在已经存在的可以用于atomicCreateFile()的函数?
编辑:呃,我不知道File.createNewFile()是否足以满足我的需要.如果我调用f.createNewFile(),然后在它返回的时间和我打开文件之间写,别人删除了该文件怎么办?有没有办法我可以创建文件并打开它来书写锁定,一举一动?我需要担心吗?
解决方法
File.createNewFile()
仅在没有文件的情况下创建文件.
编辑:根据您想要在创建文件后锁定文件的新描述,您可以使用java.nio.channels.FileLock
对象来锁定文件.没有一条线创建和锁定,就像你希望的.另请参阅SO question.