0

我正在使用以下代码解压缩.fsd文件,但它显示异常:

java.util.zip.ZipException: Central Directory Entry not found

我的代码是:

public void unzipFolder(String zipfile_name,String unzipfolder_name){
    System.out.println("zip file nme----"+zipfile_name);

    try {
        ZipFile zf = new ZipFile(zipfile_name);
        System.out.println("zip file size----"+zf.size());
        Enumeration< ? extends ZipEntry> zipEnum = zf.entries();
        String dir = unzipfolder_name;

        while( zipEnum.hasMoreElements() ) {
        ZipEntry item = (ZipEntry) zipEnum.nextElement();

        if (item.isDirectory()) {
        File newdir = new File(dir + File.separator + item.getName());
        newdir.mkdir();
        } else {
        String newfilePath = dir + File.separator + item.getName();
        File newFile = new File(newfilePath);
        if (!newFile.getParentFile().exists()) {
        newFile.getParentFile().mkdirs();
        }
        copyInputStream(zf.getInputStream(item),
                   new BufferedOutputStream(new FileOutputStream(newfilePath)));

        }
        }
        zf.close();
        } catch (Exception e) {
        e.printStackTrace();
        }
}


public static final void copyInputStream(InputStream in, OutputStream out) {
    byte[] buffer = new byte[1024];
    int len;
    try {
        while((len = in.read(buffer)) >= 0){
            out.write(buffer, 0, len);
        }
        in.close();
        out.close();
    } catch (IOException e) {
        System.err.println("Zip -> copyInputStream : "+e.getMessage()); 
    }
}

这里zipfile_name=/mnt/sdcard/forside_bookshelf_download/P160225200007046510000718MASenC.fsdunzipfolder_name=/mnt/sdcard/

我在以下行中得到了上述异常:

ZipFile zf = new ZipFile(zipfile_name);

有人可以帮帮我吗?

4

1 回答 1

0

我曾经用 zip4j 遇到过这个问题。当我在 zipfile 中添加一个主文件夹并将所有其他内容放在那里时,它就解决了。

于 2012-08-28T14:46:21.977 回答