Прежде всего, вы используете эту строку преждевременно:
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(outDir + "\\" + ze.getName())));
Это вызовет исключение , поскольку FileOutputStream
ожидает файл, а не каталог, и на этом этапевы не уверены, является ли outDir + "\\" + ze.getName()
файлом или нет.
Вы должны поставить эту строку после
if(ze.isDirectory()) {...}
Во-вторых, если вы знаете, что создаете новый каталог, илифайл, и вы знаете его родителя;было бы лучше использовать этот конструктор:
public File(File parent, String child)
См. соответствующий Javadoc .
Использование кода вроде outDir + "\\" + ze.getName()
с большей вероятностью приведет к ошибкам, если вы 'не осторожны.