Hey everyone,
Today we are going to see how you can download a zip file, unzip the contents, browse the contents and inspect any file. On top of that, for a more practical example, we are going to parse a json file and deserialise its content into a java object:
First you need 2 basic dependencies: Apache Commons Compress and Google Gson
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.9</version> </dependency>
Then it’s gonna be something as simple as:
public static void main(String args[]) throws IOException, ArchiveException, URISyntaxException { // dummy url URL url = new URL("https://www.test.com/myzip.zip"); URLConnection connection = url.openConnection(); InputStream urlInputStream = connection.getInputStream(); // create a temp file so that you can work with ZipFile File tempZipFile = new File("tempZipFile.zip"); FileUtils.copyInputStreamToFile(urlInputStream, tempZipFile); ZipFile zipFile = new ZipFile(tempZipFile); Gson gson = new Gson(); for (Enumeration<ZipArchiveEntry> zipEntryEnum = zipFile.getEntries(); zipEntryEnum.hasMoreElements();) { ZipArchiveEntry zipEntry = zipEntryEnum.nextElement(); String name = zipEntry.getName(); if (name.contains("manifest.json")) { InputStreamReader isr = new InputStreamReader(zipFile.getInputStream(zipEntry), Charsets.UTF_8); JsonReader reader = new JsonReader(isr); ManifestJson manifestJson = gson.fromJson(reader, ManifestJson.class); System.out.println("manifest: " + manifestJson.toString()); } } tempZipFile.delete(); }
Is the code self explainable? If not, please, let me know if you have any questions or if I can make it clearer…
Have fun spreading joy!