Как создать файл - включая папки - для заданного пути?
Загрузка zip файла из Интернета. Он содержит папки и файлы. Разжатие их с помощью ZipInputstream
и ZipEntry
. Zipentry.getName
указывает имя файла как htm/css/aaa.htm
.
Итак, я создаю новый File(zipentry.getName);
Но проблема бросает исключение: File not found
. Я понял, что он создает подпапки htm
и css
.
Мой вопрос: как создать файл, в том числе его подкаталоги, путем прохождения выше пути?
Ответы
Ответ 1
Используйте это:
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()
, не проверив результат, он считает лучшей практикой проверить возвращаемое значение операции. Следовательно, сначала проверяйте существующий каталог, а затем проверяйте успешное создание (если оно еще не существует).
Справка:
Ответ 2
Вы можете использовать Google guava библиотека сделать это в нескольких строках с помощью Files класса:
Files.createParentDirs(file);
Files.touch(file);
https://code.google.com/p/guava-libraries/
Ответ 3
Вам нужно создать подкаталоги, если необходимо, при прокрутке записей в 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
}
}
Ответ 4
Просматривает файл, который вы используете метод .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
}
Ответ 5
Вот как я это делаю
static void ensureFoldersExist(File folder) {
if (!folder.exists()) {
if (!folder.mkdirs()) {
ensureFoldersExist(folder.getParentFile());
}
}
}