In order to share the generated selenium webdriver reports to team or clients ,we have to zip the results folder. In this post, I will explain how can we compress generated automation reports into a zip file using java. find the below sample code for the same. Sample Code: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZIPFile { List<String> filesListInDir = new ArrayList<String>(); //Method for ZIP folder to specific Directory public void zipDirectory(File dir, String zipDirName) { try { populateFilesList(dir); //now ZIP files one by one //create ZipOutputStream to write to the ZIP file FileOutputStream fos = new FileOutputStream(zipDirName); ZipOutputStream zos = new ZipOutputStream(fos); for(String filePath : filesListInDir){ //For ZipEntry we need to keep only relative file path, so we used substring on absolute path ZipEntry ze = new ZipEntry(filePath.substring(dir.getAbsolutePath().length()+1, filePath.length())); zos.putNextEntry(ze); //Read the file and write to ZipOutputStream FileInputStream fis = new FileInputStream(filePath); byte[] buffer = new byte[1024]; int len; while ((len = fis.read(buffer)) > 0) { zos.write(buffer, 0, len); } zos.closeEntry(); fis.close(); } zos.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } //This method populates all the files in a directory to a List public void populateFilesList(File dir) throws IOException { File[] files = dir.listFiles(); for(File file : files){ if(file.isFile()) filesListInDir.add(file.getAbsolutePath()); else populateFilesList(file); } } //Usage public static void main(String[] args) throws InterruptedException{ ZIPFile zip = new ZIPFile(); File filename = new File("E:/WorkSpace/Practice/test-output"); zip.zipDirectory(filename, "AutomationReports.zip"); System.out.println("Zipping of AutomationReports successfully"); } } |