From f71865ae387cc4cc5e2f3a819af9c688d1e8ba7d Mon Sep 17 00:00:00 2001 From: Victor Date: Mon, 11 Nov 2013 21:48:18 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=A03.=20=D0=94=D0=BE=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/tse/LR_3.java | 2 +- src/tse/lr3/DirZip.java | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/tse/LR_3.java b/src/tse/LR_3.java index 4fc44d1..53ba36f 100644 --- a/src/tse/LR_3.java +++ b/src/tse/LR_3.java @@ -15,7 +15,7 @@ public class LR_3 implements ILabRab { "(Де)Сериализация коллекций", "Копирование 3-дневных файлов", "Поиск текста в файлах", - "Архивирование" + "Работа с ZIP-архивами" }; @Override diff --git a/src/tse/lr3/DirZip.java b/src/tse/lr3/DirZip.java index ce45275..4e40160 100644 --- a/src/tse/lr3/DirZip.java +++ b/src/tse/lr3/DirZip.java @@ -34,7 +34,7 @@ public class DirZip extends AbstractDirectoryChooser { @Override protected void directorySelected(File directory) { try { - if (!EXTRACT) { + if (EXTRACT) { FileInputStream fis = new FileInputStream(zipFile); ZipInputStream zis = new ZipInputStream(fis); unzipDirectory(zis, directory); @@ -54,19 +54,19 @@ public class DirZip extends AbstractDirectoryChooser { private void unzipDirectory(ZipInputStream zis, File directory) throws IOException { ZipEntry entry; while ( (entry = zis.getNextEntry()) != null) { + final String name = entry.getName(); if (entry.isDirectory()) { // Создаём папку - new File(directory, entry.getName()).mkdirs(); + new File(directory, name).mkdirs(); } else { - String filename = entry.getName(); - int separatorIndex = filename.lastIndexOf(File.separator); + int separatorIndex = name.lastIndexOf(File.separator); if (separatorIndex != -1) { - new File(directory, filename.substring(0, separatorIndex)).mkdirs(); - filename = filename.substring(separatorIndex); + // Создаём папки на пути к файлу + new File(directory, name.substring(0, separatorIndex)).mkdirs(); } // Распаковываем файл byte[] buffer = new byte[1024]; - FileOutputStream fos = new FileOutputStream(new File(directory, filename)); + FileOutputStream fos = new FileOutputStream(new File(directory, name)); int length; while ( (length = zis.read(buffer)) > 0 ) { fos.write(buffer, 0, length);