0
我有以下結構的zip文件:Java的解壓縮程序
MyZip.zip
|-- FOLDER_1
| `-- FOLDER_11
| |-- file_a
| `-- file_b
|-- FOLDER_2
| `-- FOLDER_22
| `-- file_c
`-- FOLDER_3
`-- FOLDER_33
`-- file_d
我曾嘗試使用這種example但它不與我的拉鍊結構工作。爲了讓這個班級正確解壓我的zip文件,我需要做些什麼?它將創建C:\ outputzip \ FOLDER1 \ FOLDER_11,其中FOLDER_11不是文件夾,而是一個文件名爲FOLDER_11,然後程序中斷。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnZip {
List<String> fileList;
private static final String INPUT_ZIP_FILE = "C:\\MyFile.zip";
private static final String OUTPUT_FOLDER = "C:\\outputzip";
public static void main(String[] args)
{
UnZip unZip = new UnZip();
unZip.unZipIt(INPUT_ZIP_FILE,OUTPUT_FOLDER);
}
/**
* Unzip it
* @param zipFile input zip file
* @param output zip file output folder
*/
public void unZipIt(String zipFile, String outputFolder){
byte[] buffer = new byte[1024];
try{
//create output directory is not exists
File folder = new File(OUTPUT_FOLDER);
if(!folder.exists()){
folder.mkdir();
}
//get the zip file content
ZipInputStream zis =
new ZipInputStream(new FileInputStream(zipFile));
//get the zipped file list entry
ZipEntry ze = zis.getNextEntry();
while(ze!=null){
String fileName = ze.getName();
File newFile = new File(outputFolder + File.separator + fileName);
System.out.println("file unzip : "+ newFile.getAbsoluteFile());
//create all non exists folders
//else you will hit FileNotFoundException for compressed folder
new File(newFile.getParent()).mkdirs();
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
ze = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
System.out.println("Done");
} catch(IOException ex){
ex.printStackTrace();
}
}
}
問題尋求幫助調試(「**爲什麼不是這個代碼工作的**?」 )必須包含所需的行爲,特定的問題或錯誤以及在問題本身**中重現**所需的最短代碼。沒有**明確問題陳述**的問題對其他讀者沒有用處。請參見[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – DavidPostill 2014-09-19 11:47:31
在問題**中包含您的代碼**(如果鏈接頁面發生變化,問題將會失效)。 – DavidPostill 2014-09-19 11:48:57
如果ZipEntry是目錄,則必須檢查。你將每個條目視爲一個文件。 – drkunibar 2014-09-19 12:44:17