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

时间:2010-10-28 07:16:28

标签: java android file

从网上下载zip文件。它包含文件夹和文件。使用ZipInputstreamZipEntry解压缩它们。 Zipentry.getName将文件名称设为htm/css/aaa.htm

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

但问题在于抛出异常:File not found。我知道它正在创建子文件夹htmcss

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

6 个答案:

答案 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)

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

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

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

答案 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);