写了一个解压缩的类,代码如下:
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文件吗?