我想解压缩所有文件夹和不同类型的文件,如 .xls、.apk、.png 等。但是在提取所有文件时,它们都在新提取的 foder 中(或该文件夹下的文件夹)。但那些 .xml,.png ,.apk 文件格式不正确。当我打开 ,xls 文件时,它会显示格式可能不同的弹出窗口,并且当它打开该文件时,所有内容的格式都不同。.png 文件也无法打开,解压后 .apk 也无用。为什么会这样?**
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnzipFiles {
public static void main(String a[]){
UnzipFiles mfe = new UnzipFiles();
mfe.unzipFile("E:/New folder/pics.zip");
}
public void unzipFile(String filePath){
FileInputStream fis = null;
ZipInputStream zipIs = null;
ZipEntry zEntry = null;
try {
fis = new FileInputStream(filePath);
zipIs = new ZipInputStream(new BufferedInputStream(fis));
while((zEntry = zipIs.getNextEntry()) != null){
try{
byte[] tmp = new byte[25*1024*1024];
FileOutputStream fos = null;
/*String opFilePath = "E:/New folder/new/"+zEntry.getName();*/
String opFilePath= "E:/New folder/new"+File.separator+zEntry.getName();
File f = new File( opFilePath);
if(zEntry.isDirectory())
{ f.mkdirs();
System.out.println(f.getName()+" "+"folder created");
}
else{
System.out.println(f.getName());
/*System.out.println("Extracting file to "+opFilePath);*/
fos = new FileOutputStream(f);
BufferedOutputStream out = new BufferedOutputStream(fos);
int size = 0;
int k= zipIs.read(tmp);
System.out.println(k+1);
while((size = zipIs.read(tmp)) != -1){
out.write(tmp, 0 , size);
}
}
} catch(Exception ex){
ex.printStackTrace();
}
}
zipIs.closeEntry();
zipIs.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException exc) {
// TODO Auto-generated catch block
exc.printStackTrace();
}
}
}
**