但是有個致命的缺點
ZIP檔的檔案名稱不能含有非ASCII的字元(ISO-8859-1)
一遇上非ISO-8859-1編碼的字串
下面的程式就會停擺
google一下有個package可以解決這個問題
目前還在研究這個package
有收穫再貼上來分享
先看看下面簡易的在線解壓功能
老實說,效能不怎好
解相同的檔案較PHP及C#都要來的慢..
package com.jIAn.decompress;
import java.lang.*;
import java.io.*;
import java.util.zip.*;
public class zip
{
public zip(){}
public void DecompressFile(String arg_zipFileName, String arg_outputDirectory) throws Exception
{
ZipInputStream objZipInputStream = new ZipInputStream(new FileInputStream(arg_zipFileName));
ZipEntry objZipEntry;
InputStream objInputStream = null;
File objFile ;
int intStreamLength ;
while ((objZipEntry = objZipInputStream.getNextEntry()) != null)
{
if (objZipEntry.isDirectory())
{
String strDirectoryName = objZipEntry.getName();
strDirectoryName = strDirectoryName.substring(0, strDirectoryName.length() - 1);
objFile = new File(arg_outputDirectory + File.separator + strDirectoryName);
objFile.mkdir();
System.out.println("建立資料夾 " + arg_outputDirectory + File.separator + strDirectoryName);
}
else
{
objFile = new File(arg_outputDirectory + File.separator + objZipEntry.getName());
objFile.createNewFile();
FileOutputStream objFileOutputStream = new FileOutputStream(objFile);
while ((intStreamLength = objZipInputStream.read()) != -1)
{
objFileOutputStream.write(intStreamLength);
}
objFileOutputStream.close();
}
System.out.println("解壓 " + objZipEntry.getName()+".......ok");
}
objZipInputStream.close();
}
}
如何使用?建立物件
zip objZip = new zip();
objZip.DecompressFile(欲解開的Zip檔,解到那一個目錄);
objZip.DecompressFile("C:/zip/123.zip","C:\\zip\\123");
還有一個要注意的地方
如果解壓到多層路徑需要先行建立多層路徑的目錄
沒有留言:
張貼留言