如何为给定路径创建文件(包括文件夹)?

2022-08-31 17:26:28

我正在从网上下载一个zip文件。它包含文件夹和文件。使用 和 解压缩它们。 将文件名指定为 。ZipInputstreamZipEntryZipentry.getNamehtm/css/aaa.htm

所以我正在创造新的File(zipentry.getName);

但问题是它抛出了一个异常:.我得到它正在创建子文件夹和.File not foundhtmcss

我的问题是:如何通过传递路径来创建一个包含其子目录的文件?


答案 1

使用这个:

File targetFile = new File("foo/bar/phleem.css");
File parent = targetFile.getParentFile();
if (parent != null && !parent.exists() && !parent.mkdirs()) {
    throw new IllegalStateException("Couldn't create dir: " + parent);
}

虽然您可以在不检查结果的情况下执行操作,但检查操作的返回值被认为是最佳做法。因此,首先检查现有目录,然后检查是否成功创建(如果它尚不存在)。file.getParentFile().mkdirs()

此外,如果路径不包含任何父目录,则为 。检查其稳健性。parentnull

参考:


答案 2

您可以使用Google的库在Files类的几行中完成此操作:

Files.createParentDirs(file);
Files.touch(file);

https://code.google.com/p/guava-libraries/