java 如何创建一个新的文件与失踪的父目录?

y4ekin9u  于 2023-08-02  发布在  Java
关注(0)|答案(4)|浏览(101)

使用时

file.createNewFile();

字符串
我得到以下异常

java.io.IOException: Parent directory of file does not exist: /.../pkg/databases/mydb


我想知道是否有一个createNewFile创建缺失的父目录?

nszi6y05

nszi6y051#

你试过这个吗?

file.getParentFile().mkdirs();
file.createNewFile();

字符串
我不知道一个 * 单一 * 的方法调用,将做到这一点,但它是很容易的两个语句。

vsnjm48y

vsnjm48y2#

从java7开始,您还可以使用NIO2 API:

void createFile() throws IOException {
    Path fp = Paths.get("dir1/dir2/newfile.txt");
    Files.createDirectories(fp.getParent());
    Files.createFile(fp);
}

字符串

xpszyzbs

xpszyzbs3#

如果您确定创建文件时使用的路径字符串包含父目录,即如果您确定路径的格式为<parent-dir>/<file-name>,则可以使用该路径。
如果没有,即则getParentFile()将返回null
例如:

File f = new File("dir/text.txt");
f.getParentFile().mkdirs();     // works fine because the path includes a parent directory.

File f = new File("text.txt");
f.getParentFile().mkdirs();     // throws NullPointerException because the parent file is unknown, i.e. `null`.

字符串
因此,如果您的档案路径不一定包含父目录,使用下列程式码会比较安全:

File f = new File(filename);
if (f.getParentFile() != null) {
  f.getParentFile().mkdirs();
}
f.createNewFile();

z9ju0rcb

z9ju0rcb4#

搜索Kotlin解决方案时,会弹出这个标题一般的问题。
因此,对于Kotlin1.9.0和更新版本,Path类上有一个新的createParentDirectories()方法:

Path("my/path/to/file.txt").createParentDirectories()

字符串

相关问题