Skip to content

Commit 08c8d82

Browse files
committed
add java zip examples
1 parent d64c9e4 commit 08c8d82

File tree

12 files changed

+97
-18
lines changed

12 files changed

+97
-18
lines changed

core-java-8/src/main/java/com/baeldung/unzip/UnzipFile.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,26 @@
22

33
import java.io.File;
44
import java.io.FileInputStream;
5-
import java.io.FileNotFoundException;
65
import java.io.FileOutputStream;
76
import java.io.IOException;
87
import java.util.zip.ZipEntry;
98
import java.util.zip.ZipInputStream;
109

1110
public class UnzipFile {
12-
public static void main(String[] args) throws FileNotFoundException, IOException {
13-
String fileZip = "/opt/zipped/cities.zip";
14-
byte[] buffer = new byte[1024];
15-
ZipInputStream zis = new ZipInputStream(new FileInputStream(fileZip));
11+
public static void main(final String[] args) throws IOException {
12+
final String fileZip = "src/main/resources/compressed.zip";
13+
final byte[] buffer = new byte[1024];
14+
final ZipInputStream zis = new ZipInputStream(new FileInputStream(fileZip));
1615
ZipEntry zipEntry = zis.getNextEntry();
1716
while(zipEntry != null){
18-
String fileName = zipEntry.getName();
19-
File newFile = new File("/opt/unzipped/" + fileName);
20-
FileOutputStream fos = new FileOutputStream(newFile);
17+
final String fileName = zipEntry.getName();
18+
final File newFile = new File("src/main/resources/unzipTest/" + fileName);
19+
final FileOutputStream fos = new FileOutputStream(newFile);
2120
int len;
2221
while ((len = zis.read(buffer)) > 0) {
2322
fos.write(buffer, 0, len);
2423
}
25-
fos.close();
24+
fos.close();
2625
zipEntry = zis.getNextEntry();
2726
}
2827
zis.closeEntry();
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.baeldung.zip;
2+
3+
import java.io.File;
4+
import java.io.FileInputStream;
5+
import java.io.FileOutputStream;
6+
import java.io.IOException;
7+
import java.util.zip.ZipEntry;
8+
import java.util.zip.ZipOutputStream;
9+
10+
public class ZipDirectory {
11+
public static void main(final String[] args) throws IOException {
12+
final String sourceFile = "src/main/resources/zipTest";
13+
final FileOutputStream fos = new FileOutputStream("src/main/resources/dirCompressed.zip");
14+
final ZipOutputStream zipOut = new ZipOutputStream(fos);
15+
final File fileToZip = new File(sourceFile);
16+
17+
zipFile(fileToZip, fileToZip.getName(), zipOut);
18+
zipOut.close();
19+
fos.close();
20+
}
21+
22+
private static void zipFile(final File fileToZip, final String fileName, final ZipOutputStream zipOut) throws IOException {
23+
if (fileToZip.isHidden()) {
24+
return;
25+
}
26+
if (fileToZip.isDirectory()) {
27+
final File[] children = fileToZip.listFiles();
28+
for (final File childFile : children) {
29+
zipFile(childFile, fileName + "/" + childFile.getName(), zipOut);
30+
}
31+
return;
32+
}
33+
final FileInputStream fis = new FileInputStream(fileToZip);
34+
final ZipEntry zipEntry = new ZipEntry(fileName);
35+
zipOut.putNextEntry(zipEntry);
36+
final byte[] bytes = new byte[1024];
37+
int length;
38+
while ((length = fis.read(bytes)) >= 0) {
39+
zipOut.write(bytes, 0, length);
40+
}
41+
fis.close();
42+
}
43+
}

core-java-8/src/main/java/com/baeldung/zip/ZipFile.java

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,21 @@
22

33
import java.io.File;
44
import java.io.FileInputStream;
5-
import java.io.FileNotFoundException;
65
import java.io.FileOutputStream;
76
import java.io.IOException;
87
import java.util.zip.ZipEntry;
98
import java.util.zip.ZipOutputStream;
109

1110
public class ZipFile {
12-
public static void main(String[] args) throws FileNotFoundException, IOException {
13-
String sourceFile = "/opt/photos/photo.png";
14-
FileOutputStream fos = new FileOutputStream("/opt/zipped/cities.zip");
15-
ZipOutputStream zipOut = new ZipOutputStream(fos);
16-
File fileToZip = new File(sourceFile);
17-
FileInputStream fis = new FileInputStream(fileToZip);
18-
ZipEntry zipEntry = new ZipEntry(fileToZip.getName());
11+
public static void main(final String[] args) throws IOException {
12+
final String sourceFile = "src/main/resources/zipTest/test1.txt";
13+
final FileOutputStream fos = new FileOutputStream("src/main/resources/compressed.zip");
14+
final ZipOutputStream zipOut = new ZipOutputStream(fos);
15+
final File fileToZip = new File(sourceFile);
16+
final FileInputStream fis = new FileInputStream(fileToZip);
17+
final ZipEntry zipEntry = new ZipEntry(fileToZip.getName());
1918
zipOut.putNextEntry(zipEntry);
20-
byte[] bytes = new byte[1024];
19+
final byte[] bytes = new byte[1024];
2120
int length;
2221
while((length = fis.read(bytes)) >= 0) {
2322
zipOut.write(bytes, 0, length);
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.baeldung.zip;
2+
3+
import java.io.File;
4+
import java.io.FileInputStream;
5+
import java.io.FileOutputStream;
6+
import java.io.IOException;
7+
import java.util.Arrays;
8+
import java.util.List;
9+
import java.util.zip.ZipEntry;
10+
import java.util.zip.ZipOutputStream;
11+
12+
public class ZipMultipleFiles {
13+
public static void main(final String[] args) throws IOException {
14+
final List<String> srcFiles = Arrays.asList("src/main/resources/zipTest/test1.txt", "src/main/resources/zipTest/test2.txt");
15+
final FileOutputStream fos = new FileOutputStream("src/main/resources/multiCompressed.zip");
16+
final ZipOutputStream zipOut = new ZipOutputStream(fos);
17+
for (final String srcFile : srcFiles) {
18+
final File fileToZip = new File(srcFile);
19+
final FileInputStream fis = new FileInputStream(fileToZip);
20+
final ZipEntry zipEntry = new ZipEntry(fileToZip.getName());
21+
zipOut.putNextEntry(zipEntry);
22+
23+
final byte[] bytes = new byte[1024];
24+
int length;
25+
while((length = fis.read(bytes)) >= 0) {
26+
zipOut.write(bytes, 0, length);
27+
}
28+
fis.close();
29+
}
30+
zipOut.close();
31+
fos.close();
32+
}
33+
}
146 Bytes
Binary file not shown.
634 Bytes
Binary file not shown.
273 Bytes
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello World!
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello World!
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
My Name is John

0 commit comments

Comments
 (0)