Java的createNewFile() - 它还会创建目录吗?

时间:2011-07-12 14:59:01

标签: java file io directory

我有条件在继续(./logs/error.log)之前检查某个文件是否存在。如果找不到,我想创建它。但是,

File tmp = new File("logs/error.log");
tmp.createNewFile();

如果不存在,还会创建logs/吗?

6 个答案:

答案 0 :(得分:172)

没有。
在创建文件之前使用tmp.getParentFile().mkdirs()

答案 1 :(得分:19)

File theDir = new File(DirectoryPath);
if (!theDir.exists()) theDir.mkdirs();

答案 2 :(得分:14)

File directory = new File(tmp.getParentFile().getAbsolutePath());
directory.mkdirs();

如果目录已经存在,则不会发生任何事情,因此您不需要任何检查。

答案 3 :(得分:4)

Java 8 Style

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

写入文件

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

阅读

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

完整示例

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();
        }
    }
}

答案 4 :(得分:3)

StringUtils.touch(/path/filename.ext)现在(> = 1.3)也会创建目录和文件(如果它们不存在)。

答案 5 :(得分:0)

否,如果logs不存在,您会收到java.io.IOException: No such file or directory

对于Android开发人员来说,有趣的事实是:在支持min api 26时,调用Files.createDirectories()Paths.get()之类的对象就可以工作。