壓縮單個文件代碼如下:
package 二進制文件讀寫;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.*;
/*
* 按單個文件的壓縮
*/
public class App {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
File file=new File("D:/text/temp.txt");//定義要壓縮的文件
File zipFile=new File("D:/text/temp.zip");//定義壓縮文件名稱
InputStream input=new FileInputStream(file);
ZipOutputStream zipOut=null;//聲明壓縮對象
zipOut=new ZipOutputStream(new FileOutputStream(zipFile));
zipOut.putNextEntry(new ZipEntry(file.getName()));
zipOut.setComment("zip hello");
int temp=0;
while((temp=input.read())!=-1)
{
zipOut.write(temp);
}
input.close();
zipOut.close();
System.out.print("ok");
}
}
}
壓縮一個文件夾的代碼:
package 文件夾壓縮;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class App {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
File file=new File("D:/text");
File zipFile=new File("D:/mult2.zip");
InputStream input=null;
ZipOutputStream zipOut=null;//聲明壓縮流對象
zipOut=new ZipOutputStream(new FileOutputStream(zipFile));
zipOut.setComment("hello zip");
//開始壓縮
int temp=0;
if(file.isDirectory())
{
File lists[]=file.listFiles();//返回全部文件夾
for(int i=0;i<lists.length;i++)
{
input=new FileInputStream(lists[i]);
//設置Ectry文件
zipOut.putNextEntry(new ZipEntry(file.getName()+File.separator+lists[i].getName()));
while((temp=input.read())!=-1)
{
zipOut.write(temp);
}
input.close();
}
}
zipOut.close();
}
}
解壓單個文件
package 文件夾解壓;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class App {
public static void main(String[] args) throws IOException {
File zipFile=new File("D:/text/temp.zip");
ZipInputStream input=new ZipInputStream(new FileInputStream(zipFile));
ZipEntry zip= input.getNextEntry();
System.out.println(zip.getName());
File outfile=new File("D:/"+zip.getName());
OutputStream out=new FileOutputStream(outfile);
int temp=0;
while((temp=input.read())!=-1)
{
out.write(temp);
}
input.close();
out.close();
}
}
解壓多個文件
package 解壓多個文件;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class App {
public static void main(String[] args) throws ZipException, IOException {
// TODO Auto-generated method stub
File file=new File("D:/text/temp.zip");
File outFile=null;
ZipFile zipfile=new ZipFile(file);
ZipInputStream zipInput=null;
OutputStream out=null;
InputStream input=null;
ZipEntry entry=null;
zipInput=new ZipInputStream(new FileInputStream(file));
while((entry=zipInput.getNextEntry())!=null)
{
outFile=new File("D:/"+entry.getName());
if(!outFile.getParentFile().exists())
{
outFile.getParentFile().mkdirs();
}
if(!outFile.exists())
{
if(entry.isDirectory())
{
outFile.mkdir();
}
else
{
outFile.createNewFile();
}
}
if(!entry.isDirectory())
{
input=zipfile.getInputStream(entry);//得到每一個實體的輸入流
out=new FileOutputStream(outFile);
int temp=0;
while((temp=input.read())!=-1)
{
out.write(temp);
}
input.close();
out.close();
}
}
input.close();
}
}