Как создать файл - в том числе папки - по заданному пути? - PullRequest
45 голосов
/ 28 октября 2010

Я загружаю zip-файл из Интернета.Содержит папки и файлы.Распаковывая их, используя ZipInputstream и ZipEntry.Zipentry.getName дает имя файла как htm/css/aaa.htm.

Итак, я создаю новый File(zipentry.getName);

Но проблема в том, что возникает исключение: File not found.Я понял, что он создает подпапки htm и css.

Мой вопрос: как создать файл, включая его подкаталоги, передавая путь выше?

Ответы [ 5 ]

102 голосов
/ 28 октября 2010

Используйте это:

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() без проверки результата, рекомендуется проверять возвращаемое значение операции.Отсюда сначала проверка на существующий каталог, а затем проверка на успешное создание (если он еще не существовал).

Ссылка:

12 голосов
/ 04 сентября 2013

Вы можете использовать библиотеку Google , чтобы сделать это в несколько строк с Files class:

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

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

2 голосов
/ 28 октября 2010

При необходимости вам нужно создавать подкаталоги, поскольку вы просматриваете записи в 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 
    }
}
1 голос
/ 23 декабря 2016

Вот как я это делаю

static void ensureFoldersExist(File folder) {
    if (!folder.exists()) {
        if (!folder.mkdirs()) {
            ensureFoldersExist(folder.getParentFile());
        }
    }
}
1 голос
/ 05 ноября 2014

Просмотр файла, который вы используете метод .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
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...