我有以下情况:多个线程可能会尝试同时创建同一个文件夹,例如
Thread 1 Thread 2
1 new File("\newfolder\").mkdir() 1 new File("\newfolder\").mkdir()
2 2
...
我尝试多次测试这种情况(使用多个 theda 创建相同的文件夹),每次都成功,例如,我没有遇到任何问题。 但是我担心这种方法 - 我是否应该同步此代码,例如我是否应该使用类似的东西
try {
folderCreationLock.lock();
File directory = new File(directoryPath);
if (!directory.exists()) {
directory.mkdir();
}
} finally {
folderCreationLock.unlock();
}
}
或者我安全吗
directory.mkdir();
谢谢,干杯!
最佳答案
正如 fge
已经提到的,使用 NIO 2 API。
Files.createDirectories(Paths.get("\\new\\folder"));
如果目录 \\new
不存在,这将创建目录 \\new\\folder
。
如果目录 \\new
已存在,则仅创建其子文件夹 \\folder
。
如果整个目录结构已存在,则不会创建任何内容,并且(也许最重要)不会引发异常。
关于java - 锁定创建新文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33607331/