从网上下载zip文件。它包含文件夹和文件。使用ZipInputstream
和ZipEntry
解压缩它们。 Zipentry.getName
将文件名称设为htm/css/aaa.htm
。
所以我正在创建新的File(zipentry.getName);
但问题在于抛出异常:File not found
。我知道它正在创建子文件夹htm
和css
。
我的问题是:如何通过传递上述路径来创建包含其子目录的文件?
答案 0 :(得分:100)
使用此:
File targetFile = new File("foo/bar/phleem.css");
File parent = targetFile.getParentFile();
if (!parent.exists() && !parent.mkdirs()) {
throw new IllegalStateException("Couldn't create dir: " + parent);
}
虽然您可以在不检查结果的情况下执行file.getParentFile().mkdirs()
,但最佳做法是检查操作的返回值。因此,首先检查现有目录,然后检查成功创建(如果它还不存在)。
<强>参考:强>
答案 1 :(得分:12)
答案 2 :(得分:2)
当您遍历zip文件中的条目时,您需要在必要时创建子目录。
ZipFile zipFile = new ZipFile(myZipFile);
Enumeration e = zipFile.entries();
while(e.hasMoreElements()){
ZipEntry entry = (ZipEntry)e.nextElement();
File destinationFilePath = new File(entry.getName());
destinationFilePath.getParentFile().mkdirs();
if(!entry.isDirectory()){
//code to uncompress the file
}
}
答案 3 :(得分:1)
.mkdirs()
对象上查看您使用File
方法的文件:http://www.roseindia.net/java/beginners/java-create-directory.shtml isDirectoryCreated = (new File("../path_for_Directory/Directory_Name")).mkdirs(); if (!isDirectoryCreated) { // Directory creation failed }
答案 4 :(得分:1)
我就是这样做的
static void ensureFoldersExist(File folder) {
if (!folder.exists()) {
if (!folder.mkdirs()) {
ensureFoldersExist(folder.getParentFile());
}
}
}
答案 5 :(得分:0)
Java NIO API Files.createDirectories
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
Path path = Paths.get("/folder1/folder2/folder3");
Files.createDirectories(path);