做一个上传zip文件的东西。
代码如下:
@Test
public void testZip() throws Exception{
FileOutputStream fos = null;
ZipInputStream zis = null;
ZipEntry entry = null;
File inFile = new File("D:\\Archive.zip");
zis = new ZipInputStream(new FileInputStream(inFile));
while((entry=zis.getNextEntry())!=null){
         //始终进不到这里
System.out.println(entry.getName());
}
if(zis != null){
zis.close();
}
}
显示zis.getNextEntry()一直都是null。
但是zis不为null
D:\\Archive.zip 这个文件下面有5个.text文件。

解决方案 »

  1.   


    没问题,检查一下zip格式是否正确...
      

  2.   

    另外:
    java的zip解压缩不支持中文命名的ZipEntry,遇中文会报错或乱码。
    可以考虑apache的的api。
      

  3.   

    5个txt文件里有中文文件名的吗?
    有的话,试试楼上说的apache的api。
    指定正确的encode再试试看。
      

  4.   

    import java.io.File ;
    import java.io.OutputStream ;
    import java.io.InputStream ;
    import java.util.zip.ZipEntry ;
    import java.util.zip.ZipFile ;
    import java.util.zip.ZipInputStream ;
    import java.io.FileInputStream ;
    import java.io.FileOutputStream ;
    public class ZipInputStreamDemo02{
    public static void main(String args[]) throws Exception{ // 所有异常抛出
    File file = new File("d:" + File.separator + "mldndir.zip") ; // 定义压缩文件名称
    File outFile = null ; // 输出文件的时候要有文件夹的操作
    ZipFile zipFile = new ZipFile(file) ; // 实例化ZipFile对象
    ZipInputStream zipInput = null ; // 定义压缩输入流
    OutputStream out = null ; // 定义输出流,用于输出每一个实体内容
    InputStream input = null ; // 定义输入流,读取每一个ZipEntry
    ZipEntry entry = null ; // 每一个压缩实体
    zipInput = new ZipInputStream(new FileInputStream(file)) ; // 实例化ZIpInputStream
    while((entry = zipInput.getNextEntry())!=null){ // 得到一个压缩实体
    System.out.println("解压缩" + entry.getName() + "文件。") ;
    outFile = new File("d:" + File.separator + entry.getName()) ; // 定义输出的文件路径
    if(!outFile.getParentFile().exists()){ // 如果输出文件夹不存在
    outFile.getParentFile().mkdir() ; // 创建文件夹
    }
    if(!outFile.exists()){ // 判断输出文件是否存在
    outFile.createNewFile() ; // 创建文件
    }
    input = zipFile.getInputStream(entry) ; // 得到每一个实体的输入流
    out = new FileOutputStream(outFile) ; // 实例化文件输出流
    int temp = 0 ;
    while((temp=input.read())!=-1){
    out.write(temp) ;
    }
    input.close() ; // 关闭输入流
    out.close() ; // 关闭输出流
    }
    input.close() ;
    }
    };贴个完整的解压缩文件代码,lz看是否少了哪个步骤,再结合2楼的建议,可以搞定