Java's createNewFile() - will it also create directories?

后端 未结 6 845
野趣味
野趣味 2020-12-13 08:20

I\'ve got a conditional to check if a certain file exists before proceeding (./logs/error.log). If it isn\'t found I want to create it. However, will

         


        
相关标签:
6条回答
  • 2020-12-13 08:27

    No.
    Use tmp.getParentFile().mkdirs() before you create the file.

    0 讨论(0)
  • 2020-12-13 08:28

    Java 8 Style

    Path path = Paths.get("logs/error.log");
    Files.createDirectories(path.getParent());
    

    To write on file

    Files.write(path, "Log log".getBytes());
    

    To read

    System.out.println(Files.readAllLines(path));
    

    Full example

    public class CreateFolderAndWrite {
    
        public static void main(String[] args) {
            try {
                Path path = Paths.get("logs/error.log");
                Files.createDirectories(path.getParent());
    
                Files.write(path, "Log log".getBytes());
    
                System.out.println(Files.readAllLines(path));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-13 08:34

    No, and if logs does not exist you'll receive java.io.IOException: No such file or directory

    Fun fact for android devs: calls the likes of Files.createDirectories() and Paths.get() would work when supporting min api 26.

    0 讨论(0)
  • 2020-12-13 08:35
    File directory = new File(tmp.getParentFile().getAbsolutePath());
    directory.mkdirs();
    

    If the directories already exist, nothing will happen, so you don't need any checks.

    0 讨论(0)
  • 2020-12-13 08:36

    StringUtils.touch(/path/filename.ext) will now (>=1.3) also create the directory and file if they don't exist.

    0 讨论(0)
  • 2020-12-13 08:44
    File theDir = new File(DirectoryPath);
    if (!theDir.exists()) theDir.mkdirs();
    
    0 讨论(0)
提交回复
热议问题