Skip to content

Commit 66fb7ea

Browse files
authored
JAVA-5735: Appending a new File to a ZIP file (#13044)
1 parent 66f1799 commit 66fb7ea

3 files changed

Lines changed: 36 additions & 2 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.baeldung.zip;
2+
3+
import java.io.*;
4+
import java.net.URI;
5+
import java.net.URL;
6+
import java.nio.charset.StandardCharsets;
7+
import java.nio.file.*;
8+
import java.util.*;
9+
import java.util.stream.Collectors;
10+
import java.util.stream.Stream;
11+
import java.util.zip.ZipEntry;
12+
import java.util.zip.ZipOutputStream;
13+
14+
import static java.util.stream.Collectors.toList;
15+
16+
public class ZipAppendFile {
17+
public static void main(final String[] args) throws IOException {
18+
ZipMultipleFiles.main(args);
19+
String file3 = ZipAppendFile.class.getClassLoader().getResource("zipTest/file3.txt").getPath();
20+
Map<String, String> env = new HashMap<>();
21+
env.put("create", "true");
22+
Path path = Paths.get(Paths.get(file3).getParent() + "/compressed.zip");
23+
URI uri = URI.create("jar:" + path.toUri());
24+
try (FileSystem fs = FileSystems.newFileSystem(uri, env)) {
25+
Path nf = fs.getPath("newFile3.txt");
26+
Files.write(nf, Files.readAllBytes(Paths.get(file3)), StandardOpenOption.CREATE);
27+
}
28+
}
29+
}

core-java-modules/core-java-io/src/main/java/com/baeldung/zip/ZipMultipleFiles.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44
import java.io.FileInputStream;
55
import java.io.FileOutputStream;
66
import java.io.IOException;
7+
import java.nio.file.Paths;
78
import java.util.Arrays;
89
import java.util.List;
910
import java.util.zip.ZipEntry;
1011
import java.util.zip.ZipOutputStream;
1112

1213
public class ZipMultipleFiles {
1314
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");
15+
String file1 = ZipAppendFile.class.getClassLoader().getResource("zipTest/test1.txt").getPath();
16+
String file2 = ZipAppendFile.class.getClassLoader().getResource("zipTest/test2.txt").getPath();
17+
final List<String> srcFiles = Arrays.asList(file1, file2);
18+
final FileOutputStream fos =
19+
new FileOutputStream(Paths.get(file1).getParent().toAbsolutePath() + "/compressed.zip");
1620
final ZipOutputStream zipOut = new ZipOutputStream(fos);
1721
for (final String srcFile : srcFiles) {
1822
final File fileToZip = new File(srcFile);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Test3.txt

0 commit comments

Comments
 (0)