With this example I will show you how to create an archive or zip from multiple files using Java language.
If you already have an idea on how to create a maven project in Eclipse will be great otherwise I will tell you here how to create a maven project in Eclipse. Prerequisites
The following things are required in order to run the application
Eclipse Kepler
JDK 1.8
Have maven 3 installed and configured
Now we will see the below steps how to create a maven based spring project in Eclipse
Step 1. Create a standalone maven project in Eclipse
Go to File -> New -> Other. On popup window under Maven select Maven Project. Then click on Next. Select the workspace location – either default or browse the location. Click on Next. Now in next window select the row as highlighted from the below list of archtypes and click on Next button.
maven-arctype-quickstart
Now enter the required fields (Group Id, Artifact Id) as shown below
Group Id : com.roytuts
Artifact Id : java
Step 2. Modify the pom.xml file as shown below.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.roytuts</groupId> <artifactId>java</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>java</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jdk.version>1.8</jdk.version> <junit.version>4.11</junit.version> </properties> <dependencies> <!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> </configuration> </plugin> </plugins> </build> </project>
Step 3. Create a method to create archieve or zip from multiple files
package com.roytuts.archieve; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class Archieve { @SuppressWarnings("resource") public static void createZipFromFiles(final String zipFileName, final List<File> files) { FileOutputStream fos = null; ZipOutputStream zos = null; try { byte[] buffer = new byte[1024]; fos = new FileOutputStream(zipFileName); zos = new ZipOutputStream(fos); if (files != null) { for (File file : files) { FileInputStream fs = new FileInputStream(file); zos.putNextEntry(new ZipEntry(file.getName())); int length; while ((length = fs.read(buffer)) > 0) { zos.write(buffer, 0, length); } zos.closeEntry(); } } } catch (Exception e) { e.printStackTrace(); } finally { try { if (zos != null) { zos.close(); } } catch (Exception e) { } try { if (fos != null) { fos.close(); } } catch (Exception e) { } } } }
Step 4. Create a junit test case
package com.roytuts.archieve; import java.io.File; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; public class ArchieveTest { private List<File> files; @Before public void setUp() throws Exception { files = new ArrayList<File>(); File f1 = new File("D:/test.sql"); File f2 = new File("D:/website.sql"); File f3 = new File("D:/school.sql"); files.add(f1); files.add(f2); files.add(f3); } @Test public void testCreateZipFromFiles() { Archieve.createZipFromFiles("D:/Archieve.zip", files); } }
Step 5. Now run the junit test class, you will get the zip output in “D” drive.
Thanks for reading.