How To Zip A Single File In Java?
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFileJavaProgram
{
private static void zipSingleFile(String filePath) throws IOException
{
//Step 1 : Create a File fileToBeZipped with given filePath
//and wrap it into FileInputStream fis
File fileToBeZipped = new File(filePath);
FileInputStream fis = new FileInputStream(fileToBeZipped);
//Step 2 : Create FileOutputStream fos with path to output file
//and wrap it into ZipOutputStream zos
FileOutputStream fos = new FileOutputStream("I:\\ZippedFile.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
//Step 3 : Create zipEntry with the name of fileToBeZipped
ZipEntry zipEntry = new ZipEntry(fileToBeZipped.getName());
//Step 4 : Read fis byte by byte into byte array bytes and
//write them into zos till the end of fis
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
while (fis.read(bytes) >= 0)
{
zos.write(bytes, 0, bytes.length);
}
zos.closeEntry();
//Step 5 : Close the resources
fis.close();
zos.close();
fos.close();
}
public static void main(String[] args) throws IOException
{
String filePath = "I:\\TextFileOne.txt";
zipSingleFile(filePath);
}
}
How To Zip Multiple Files In Java?
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFileJavaProgram
{
private static void zipMultipleFiles(String... filePaths) throws IOException
{
//Step 1 : Creating FileOutputStream fos and ZipOutputStream zos
FileOutputStream fos = new FileOutputStream("I:\\ZippedFile.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
//Step 2 : Creating a List of filePaths
List<String> filesToBeZipped = Arrays.asList(filePaths);
FileInputStream fis;
//Step 3 : Zipping each file in filesToBeZipped one by one
for (String filePath : filesToBeZipped)
{
File fileToBeZipped = new File(filePath);
fis = new FileInputStream(fileToBeZipped);
ZipEntry zipEntry = new ZipEntry(fileToBeZipped.getName());
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
while (fis.read(bytes) >= 0)
{
zos.write(bytes, 0, bytes.length);
}
zos.closeEntry();
fis.close();
}
//Step 4 : Close the resources
zos.close();
fos.close();
}
public static void main(String[] args) throws IOException
{
String[] filePaths = new String[] {"I:\\TextFileOne.txt", "I:\\TextFileTwo.txt", "I:\\TextFileThree.txt"} ;
zipMultipleFiles(filePaths);
}
}
How To Zip A Whole Directory In Java?
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFileJavaProgram
{
//Method to ZIP single file
private static void zipSingleFile(String filePath, ZipOutputStream zos) throws IOException
{
File fileToBeZipped = new File(filePath);
FileInputStream fis = new FileInputStream(fileToBeZipped);
ZipEntry zipEntry = new ZipEntry(filePath);
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
while (fis.read(bytes) >= 0)
{
zos.write(bytes, 0, bytes.length);
}
zos.closeEntry();
fis.close();
}
//Method To ZIP Whole directory
private static void zipWholeDirectory(String filePath, ZipOutputStream zos) throws IOException
{
File fileToBeZipped = new File(filePath);
if(fileToBeZipped.isDirectory())
{
File[] files = fileToBeZipped.listFiles();
for (File file : files)
{
zipWholeDirectory(filePath+"\\"+file.getName(), zos);
}
}
else
{
zipSingleFile(filePath, zos);
}
}
public static void main(String[] args) throws IOException
{
//Step 1 : Let filePath be the path of the directory to be zipped
String filePath = "I:\\Java\\jdk1.8.0_181\\src";
//Step 2 : Creating FileOutputStream and ZipOutputStream
FileOutputStream fos = new FileOutputStream("I:\\ZippedFile.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
//Step 3 : Call to zipWholeDirectory()
zipWholeDirectory(filePath, zos);
//Step 4 : Close the resources
zos.close();
fos.close();
}
}
Source : https://javaconceptoftheday.com/how-to-zip-file-directory-in-java/
Top comments (0)