寫了一個解壓縮的類,代碼如下: mport java.io. * ;
import java.util.zip. * ;
public class UnZipAE ... {
static final int BUFFER = 2048;
ZipInputStream zis = null;
String outputDirectory = new String();
public void openZipFile(String fileName)
...{
try
...{
zis = new ZipInputStream(
new BufferedInputStream(
new FileInputStream(fileName)));
}
catch(Exception e)
...{
System.out.println(e);
}
}
public void setOutPutDirectory(String directory)
...{
outputDirectory = directory;
}
public void unzipFile()
...{
byte [] bArray = new byte [2048];
int len = 2048, ct;
ZipEntry entry;
try
...{
while((entry = zis.getNextEntry()) != null)
...{
FileOutputStream fout = new FileOutputStream(outputDirectory + "/" + entry.getName());
BufferedOutputStream bout = new BufferedOutputStream(fout, len);
while((ct = zis.read(bArray, 0, len)) != -1)
...{
bout.write(bArray, 0, ct);
}
bout.flush();
fout.close();
bout.close();
}
zis.close();
}
catch(Exception e)
...{
System.out.println(e);
}
}
}
但寫了一個測試程式運行起來後,問題就來了. UnZipAE uzp = new UnZipAE();
uzp.openZipFile( " D:/test.zip " );
uzp.setOutPutDirectory( " D:/output " );
uzp.unzipFile();
運行起來後,居然報異常IllegalArgumentException,設定斷點調試後,發現異常是在entry = zis.getNextEntry()拋出的.我暈,這種異常怎麼調試.鬱悶了半天后,我開始懷疑是不是壓縮檔有問題,因為這個壓縮檔包內全是中文命名的檔案,於是,我換了一個zip壓縮包.壓縮包內的檔案都是英文命名的原始碼.測試回合,一切正常.暈!!!!難道是java不支援解壓縮包含中文檔案名稱的zip檔案嗎?