ЛР3. Дополнительное задание. Распаковка beta.
This commit is contained in:
parent
9edb74bdb6
commit
511e6511b2
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user