【发布时间】:2014-06-23 14:15:08
【问题描述】:
我正在从第三方检索 .zip 文件。我想将它们解压缩到另一个文件夹。为此,我找到了一种完全可以做到这一点的方法,请参见下面的代码。它遍历所有文件并将它们解压缩到另一个文件夹。但是,当观察相应的压缩方法时,我发现某些文件会发生这种变化。对于某些文件,它声明:"invalid compression method",之后它会中止对 zip 文件的进一步解压缩。
由于压缩方法似乎发生了变化,我怀疑我需要将压缩方法设置为正确的方法(但这可能是一个错误的假设)。那么我的问题就来了:如何确定所需的压缩方法?
我正在使用的代码:
public void unZipIt(String zipFile, String outputFolder){
//create output directory is not exists
File folder = new File(OUTPUT_FOLDER);
if(!folder.exists()){
folder.mkdir();
}
FileInputStream fis = null;
ZipInputStream zipIs = null;
ZipEntry zEntry = null;
try
{
fis = new FileInputStream(zipFile);
zipIs = new ZipInputStream(new BufferedInputStream(fis));
while((zEntry = zipIs.getNextEntry()) != null){
System.out.println(zEntry.getMethod());
try{
byte[] tmp = new byte[4*1024];
FileOutputStream fos = null;
String opFilePath = OUTPUT_FOLDER + "\\" + zEntry.getName();
System.out.println("Extracting file to "+opFilePath);
fos = new FileOutputStream(opFilePath);
int size = 0;
while((size = zipIs.read(tmp)) != -1){
fos.write(tmp, 0 , size);
}
fos.flush();
fos.close();
} catch(IOException e){
System.out.println(e.getMessage());
}
}
zipIs.close();
} catch (FileNotFoundException e) {
System.out.println(e.getMessage());
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
目前我正在检索以下输出:
8
Extracting file to C:\Users\nlmeibe2\Documents\Projects\Output_test\SOPHIS_cptyrisk_tradedata_1192_20140616.csv
8
Extracting file to C:\Users\nlmeibe2\Documents\Projects\Output_test\SOPHIS_cptyrisk_underlying_1192_20140616.csv
0
Extracting file to C:\Users\nlmeibe2\Documents\Projects\Output_test\10052013/
12
Extracting file to C:\Users\nlmeibe2\Documents\Projects\Output_test\MRM_Daily_Position_Report_Package_Level_Underlying_View_EQB_v2_COBDATE_2014-06-16_RUNDATETIME_2014-06-17-04h15.csv
invalid compression method
invalid compression method
【问题讨论】:
-
你指的是
.zipvs.rarvs.7zip? -
@screenmutt:我指的是 .zip。 (编辑问题,谢谢)
标签: java