diff --git a/core-java-modules/core-java-20/src/main/java/com/baeldung/zipentries/ZipEntryReader.java b/core-java-modules/core-java-20/src/main/java/com/baeldung/zipentries/ZipEntryReader.java new file mode 100644 index 0000000000..a353837e08 --- /dev/null +++ b/core-java-modules/core-java-20/src/main/java/com/baeldung/zipentries/ZipEntryReader.java @@ -0,0 +1,31 @@ +package com.baeldung.zipentries; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.Scanner; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +public class ZipEntryReader { + + public static void readZipEntries(String filePath) throws IOException { + try (ZipFile zipFile = new ZipFile(filePath)) { + Enumeration entries = zipFile.entries(); + while (entries.hasMoreElements()) { + ZipEntry entry = entries.nextElement(); + // Check if entry is a directory + if (!entry.isDirectory()) { + // Read and process the entry contents using the inputStream + try (InputStream inputStream = zipFile.getInputStream(entry); + Scanner scanner = new Scanner(inputStream);) { + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + System.out.println(line); + } + } + } + } + } + } +} diff --git a/core-java-modules/core-java-20/src/test/java/com/baeldung/zipentries/ZipEntryReaderTest.java b/core-java-modules/core-java-20/src/test/java/com/baeldung/zipentries/ZipEntryReaderTest.java new file mode 100644 index 0000000000..2eb47ff057 --- /dev/null +++ b/core-java-modules/core-java-20/src/test/java/com/baeldung/zipentries/ZipEntryReaderTest.java @@ -0,0 +1,17 @@ +package com.baeldung.zipentries; + +import org.junit.Test; + +import java.io.IOException; +import java.net.URISyntaxException; +import java.nio.file.Path; +import java.nio.file.Paths; + +public class ZipEntryReaderTest { + + @Test + public void givenZipFile_thenReadEntriesAndValidateContent() throws URISyntaxException, IOException { + Path zipFilePath = Paths.get(getClass().getClassLoader().getResource("zipFile.zip").toURI()); + ZipEntryReader.readZipEntries(zipFilePath.toString()); + } +} diff --git a/core-java-modules/core-java-20/src/test/resources/zipFile.zip b/core-java-modules/core-java-20/src/test/resources/zipFile.zip new file mode 100644 index 0000000000..3fc509651f Binary files /dev/null and b/core-java-modules/core-java-20/src/test/resources/zipFile.zip differ