Saturday, 7 May 2022

UnZip files using Java

        import java.io.BufferedOutputStream;

        import java.io.File;

        import java.io.FileInputStream;

        import java.io.FileNotFoundException;

        import java.io.FileOutputStream;

        import java.io.IOException;

        import java.util.zip.GZIPInputStream;

        import java.util.zip.GZIPOutputStream;

        import java.util.zip.ZipEntry;

        import java.util.zip.ZipInputStream;

        import java.util.zip.ZipOutputStream;




       public void unZip(String inputFile, String outputFilePath) {

try {

File destDir = new File(outputFilePath);

byte[] buffer = new byte[1024];

ZipInputStream zis = new ZipInputStream(new FileInputStream(inputFile));

ZipEntry zipEntry = zis.getNextEntry();

while (zipEntry != null) {

File newFile = newFile(destDir, zipEntry);

if (zipEntry.isDirectory()) {

if (!newFile.isDirectory() && !newFile.mkdirs()) {

throw new IOException("Failed to create directory " + newFile);

}

} else {

// fix for Windows-created archives

File parent = newFile.getParentFile();

if (!parent.isDirectory() && !parent.mkdirs()) {

throw new IOException("Failed to create directory " + parent);

}


// write file content

FileOutputStream fos = new FileOutputStream(newFile);

int len;

while ((len = zis.read(buffer)) > 0) {

fos.write(buffer, 0, len);

}

fos.close();

}

zipEntry = zis.getNextEntry();

}

zis.closeEntry();

zis.close();

} catch (Exception e) {

System.out.println(e.getMessage());

}

}


        public static File newFile(File destinationDir, ZipEntry zipEntry) throws             IOException {

File destFile = new File(destinationDir, zipEntry.getName());


String destDirPath = destinationDir.getCanonicalPath();

String destFilePath = destFile.getCanonicalPath();


if (!destFilePath.startsWith(destDirPath + File.separator)) {

throw new IOException("Entry is outside of the target dir: " + zipEntry.getName());

}


return destFile;

}

No comments:

Post a Comment

Switch case in Java

 Problem statement: Return the capital of a state based on input state          public String getCapital(String state){               switch...