写了一个解压缩的类,代码如下:
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文件吗?
Java解压缩中文文件名ZIP异常分析
在尝试解压包含中文文件名的ZIP文件时,遇到IllegalArgumentException异常。通过调试发现,异常发生在调用`entry = zis.getNextEntry()`时。更换为英文文件名的ZIP文件后,解压缩过程正常进行,引发疑问:Java是否支持解压包含中文文件名的ZIP文件。
1192

被折叠的 条评论
为什么被折叠?



