Here is a demo program to demonstrate archiving of files to 7z format using Apache Commons Compress API
List of Jars required:
List of Jars required:
- xz-1.4.jar
- commons-compress-1.8.jar
package demo.sevenzcompression.examples; import java.io.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import org.apache.commons.compress.archivers.sevenz.*; public class SevenZCompressionDemo { public static void main(String args[]) { // set the files to be archived File file1 = new File("Demo1.csv"); File file2 = new File("Demo2.csv"); File file3 = new File("Demo3.csv"); File file4 = new File("Demo4.csv"); // add files to an array list ArrayList<File> filesToArchive = new ArrayList<File>(); filesToArchive.add(file1); filesToArchive.add(file2); filesToArchive.add(file3); filesToArchive.add(file4); // get formatted file name with system date (ex: Archive_20140709.7z) String sevenZarchiveFileName = getFormattedFileName(); File sevenZFile = new File(sevenZarchiveFileName); SevenZOutputFile sevenZOutput = null; System.out.println("Attempting to create " + sevenZarchiveFileName + "......."); try { sevenZOutput = new SevenZOutputFile(sevenZFile); } catch (IOException e1) { System.out.println(e1.getMessage()); System.exit(0); } for (int i = 0; i < filesToArchive.size(); i++) { try { SevenZArchiveEntry entry = sevenZOutput.createArchiveEntry( filesToArchive.get(i), filesToArchive.get(i).getName()); sevenZOutput.putArchiveEntry(entry); FileInputStream in = new FileInputStream(filesToArchive.get(i)); byte[] b = new byte[1024]; int count = 0; while ((count = in.read(b)) > 0) { sevenZOutput.write(b, 0, count); } sevenZOutput.closeArchiveEntry(); in.close(); } catch (IOException e) { System.out.println(e.getMessage()); System.exit(0); } } try { sevenZOutput.close(); System.out.println("Archive " + sevenZarchiveFileName + " created successfully......."); } catch (IOException e) { System.out.println(e.getMessage()); } } private static String getFormattedFileName() { long millis = System.currentTimeMillis(); Date date = new Date(millis); SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); String filename = "Archive_" + df.format(date) + ".7z"; return filename; } }