java - 锁定创建新文件夹

标签 java io

我有以下情况:多个线程可能会尝试同时创建同一个文件夹,例如

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/

相关文章:

java - 使用 hashmap 存储在两个不同的映射中

java - Java 中的静态方法和接口(interface)

java - GWT ValueProxy 和 RequestFactory 域类型错误

windows - 具有 NoBuffering 的 Haskell 跨平台 getChar

linux - 从磁盘读取单个扇区

java - 并行解析来自外部网络提供商的许多 csv

java - 一列添加两个按钮并获取点击行值javafx

python - 从 python 脚本创建键盘输入命令

file - OCaml 如何写入文件?

java - Java中如何去掉字符串中的null?