ЛР3. Дополнительное задание. Распаковка beta.

This commit is contained in:
Victor 2013-11-11 20:09:03 +02:00
parent 9edb74bdb6
commit 511e6511b2

View File

@ -5,6 +5,7 @@ import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
/** /**
@ -33,8 +34,11 @@ public class DirZip extends AbstractDirectoryChooser {
@Override @Override
protected void directorySelected(File directory) { protected void directorySelected(File directory) {
try { try {
if (EXTRACT) { if (!EXTRACT) {
FileInputStream fis = new FileInputStream(zipFile);
ZipInputStream zis = new ZipInputStream(fis);
unzipDirectory(zis, directory);
zis.close();
} else { } else {
// Запаковываем // Запаковываем
FileOutputStream fos = new FileOutputStream(zipFile); FileOutputStream fos = new FileOutputStream(zipFile);
@ -47,6 +51,33 @@ public class DirZip extends AbstractDirectoryChooser {
} }
} }
private void unzipDirectory(ZipInputStream zis, File directory) throws IOException {
ZipEntry entry;
while ( (entry = zis.getNextEntry()) != null) {
if (entry.isDirectory()) {
// Создаём папку
new File(directory, entry.getName()).mkdirs();
} else {
String filename = entry.getName();
int separatorIndex = filename.lastIndexOf(File.separator);
if (separatorIndex != -1) {
new File(directory, filename.substring(0, separatorIndex)).mkdirs();
filename = filename.substring(separatorIndex);
}
// Распаковываем файл
byte[] buffer = new byte[1024];
FileOutputStream fos = new FileOutputStream(new File(directory, filename));
int length;
while ( (length = zis.read(buffer)) > 0 ) {
fos.write(buffer, 0, length);
}
fos.flush();
fos.close();
}
}
zis.closeEntry();
}
private void zipDirectory(ZipOutputStream zos, String sourceDir, File fileSource) throws IOException { private void zipDirectory(ZipOutputStream zos, String sourceDir, File fileSource) throws IOException {
File[] files = fileSource.listFiles(); File[] files = fileSource.listFiles();
for (File file : files) { for (File file : files) {