private void copyData(InputStream in, OutputStream out) throws Exception {
byte[] buffer = new byte[8 * 1024];
int len;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
}
public void extractAll(Path outputFolder) throws Exception {
if (!Files.isRegularFile(zipFile)) throw new WrongZipFileException();
if (Files.notExists(outputFolder)) Files.createDirectories(outputFolder);
try(ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(zipFile))) {
ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
Path absolute = outputFolder.resolve(zipEntry.getName());
Files.createDirectories(absolute.getParent());
try(OutputStream out = Files.newOutputStream(absolute)) {
copyData(zipInputStream, out);
}
}
zipInputStream.closeEntry();
}TheVoda
1 уровень
Не пойму в чем дело. Валидатор принял, но программа то не работает. При дебаге всегда исключение вылетает на методе copy и файлы и папки не создаются.
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBergMaster
20 ноября 2019, 00:24
Какое хоть исключение? А то при 15-и классах, вот так вот гадать, это как пальцем в небо.
Сам метод copyData вроде как вполне рабочий.
0
TheVoda
20 ноября 2019, 00:49
После строки
даже не доходя(я только что это понял) до метода copy прыгает на внешний try, а оттуда в main обрабатываться в блоке catch( Exception e )
0
IceBergMaster
20 ноября 2019, 00:52
Ты ошибку можешь прочитать, или как?)
0
TheVoda
20 ноября 2019, 01:01
Да уж, чето я совсем затупил. Теперь не могу, потому что теперь все отрабатывает, я вообще уже ни черта не понимаю. Пытался в одну и ту же папку на рабочем столе все время разархивировать, не получалось. В итоге попробовал рядом папку создать - получилось. Удалил предыдущую и заново её создал, все пишется. Что блин это могло быть?)
0