public static void unzipFile(File zip,String directory) throws Exception
{
try{
java.util.zip.ZipInputStream zis = new java.util.zip.ZipInputStream(new FileInputStream(zip));
java.util.zip.ZipEntry ze = (java.util.zip.ZipEntry) zis.getNextEntry();
File parent = new File(directory);
if (!parent.exists() && !parent.mkdirs()){
throw new Exception("创建解压目录 \"" + parent.getAbsolutePath() + "\" 失败");
}
while (ze != null){
String name = ze.getName();
File child = new File(parent, name);
FileOutputStream output = new FileOutputStream(child);
byte[] buffer = new byte[10240];
int bytesRead = 0;
while ((bytesRead = zis.read(buffer)) > 0){
output.write(buffer, 0, bytesRead);
}
output.flush();
output.close();
ze = (java.util.zip.ZipEntry) zis.getNextEntry();
}
zis.close();
}catch (IOException e){
e.printStackTrace();
}
}
为什么zis.getNextEntry()这二个地方获取对象就报错。
java.lang.IllegalArgumentException
at java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:301)
at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:247)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:74)
at com.minxinloan.black.web.utils.Test.unzipFile(Test.java:110)
at com.minxinloan.black.web.utils.Test.main(Test.java:85
如果压缩文件下面有文件夹就报这个错误,没有文件夹直接是文件就不报错误。这是为什么。有点着急。