[ public static void unzip(String warPath, String unzipPath) { File warF
[轉載:http://wintys.blog.51cto.com/425414/90872 import java.io.*; import java.util.zip.*;
public static void ZipFile(String filepath ,String zippath) {
try {
File file = new File(filepath);// 要被壓縮的檔案夾
File zipFile = new File(zippath);
InputStream input = null;
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
if(file.isDirectory()){//壓縮檔案夾
File[] files = file.listFiles();
for(int i = 0; i < files.length; ++i){
input = new FileInputStream(files[i]);
zipOut.putNextEntry(new ZipEntry(file.getName() + File.separator + files[i].getName()));
int temp = 0;
while((temp = input.read()) != -1){
zipOut.write(temp);
}
input.close();
}
zipOut.close();
}else{//壓縮單個檔案
input = new FileInputStream(file);
String fileName = new String(file.getName().getBytes(), "UTF-8");
zipOut.putNextEntry(new ZipEntry(fileName));
int temp = 0;
while((temp = input.read()) != -1){
zipOut.write(temp);
}
input.close();
zipOut.close();
}
zipOut.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void ZipContraFile(String zippath ,String outfilepath ,String filename) {
try {
File file = new File(zippath);//壓縮檔案路徑和檔案名
File outFile = new File(outfilepath);//解壓後路徑和檔案名
ZipFile zipFile = new ZipFile(file);
ZipEntry entry = zipFile.getEntry(filename);//所解壓的檔案名
InputStream input = zipFile.getInputStream(entry);
OutputStream output = new FileOutputStream(outFile);
int temp = 0;
while((temp = input.read()) != -1){
output.write(temp);
}
input.close();
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void ZipContraMultiFile(String zippath ,String outzippath){
try {
File file = new File(zippath);
File outFile = null;
ZipFile zipFile = new ZipFile(file);
ZipInputStream zipInput = new ZipInputStream(new FileInputStream(file));
ZipEntry entry = null;
InputStream input = null;
OutputStream output = null;
while((entry = zipInput.getNextEntry()) != null){
System.out.println("解壓縮" + entry.getName() + "檔案");
outFile = new File(outzippath + File.separator + entry.getName());
if(!outFile.getParentFile().exists()){
outFile.getParentFile().mkdir();
}
if(!outFile.exists()){
outFile.createNewFile();
}
input = zipFile.getInputStream(entry);
output = new FileOutputStream(outFile);
int temp = 0;
while((temp = input.read()) != -1){
output.write(temp);
}
input.close();
output.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
ZipFile("E:/zip/中文名.txt", "E:/zip/壓縮單個檔案.zip");
ZipFile("E:/zip", "E:/壓縮多個檔案.zip");
ZipContraFile("E:/zip/壓縮單個檔案.zip","E:/zip/解壓檔案.txt", "1.txt");
ZipContraMultiFile("E:/壓縮多個檔案.zip","E:/zip2");
System.out.println("********執行成功**********");
}
}
[ 本文使用了jdk1.5.0_13的源代碼。(java.uti.zip*)實作方法:首先将java.uti.zip中的源代碼解壓出來。找到DeflaterOutputStream、InflaterInputStream、ZipConstants、Zip