使用 Java nio 创建子目录和文件

2022-09-01 10:58:02

我正在创建一个简单的程序,它将尝试从磁盘读取“conf/conf.xml”,但如果此文件或dir不存在,则会创建它们。

我可以使用以下代码执行此操作:

    // create subdirectory path
    Path confDir = Paths.get("./conf"); 

    // create file-in-subdirectory path
    Path confFile = Paths.get("./conf/conf.xml"); 

    // if the sub-directory doesn't exist then create it
    if (Files.notExists(confDir)) { 
        try { Files.createDirectory(confDir); }
        catch (Exception e ) { e.printStackTrace(); }
    }

    // if the file doesn't exist then create it
    if (Files.notExists(confFile)) {
        try { Files.createFile(confFile); }
        catch (Exception e ) { e.printStackTrace(); }
    }

我的问题是,这真的是最优雅的方法吗?需要创建两个路径,以便在新的子目录中创建新文件,这似乎非常麻烦。


答案 1

您可以将您的 声明为 而不是 .然后您可以使用 ,请参阅下面的示例:confFileFilePathconfFile.getParentFile().mkdirs();

// ...

File confFile = new File("./conf/conf.xml"); 
confFile.getParentFile().mkdirs();

// ...

或者,按原样使用代码,您可以使用:

Files.createDirectories(confFile.getParent());

答案 2

您可以在一个代码行中创建目录和文件:

Files.createFile(Files.createDirectories(confDir).resolve(confFile.getFileName()))

Files.createDirectories(confDir)如果文件夹已存在,则不会引发异常,并且在任何情况下都返回 Path。