压缩文件时出现问题

时间:2011-08-09 12:21:39

标签: java zip

当我运行我的代码并使用项目本身资源文件夹中的文件时,我没有遇到任何问题。它成功地压缩文件,我可以使用WINZIP提取它。当我尝试压缩不在项目文件夹中的文件时出现问题。

当我这样做的时候,我正在传递src和dest文件的绝对路径。我的程序没有任何例外,但是当我尝试打开该zip文件时,我收到错误消息,文件无效。

任何人都可以告诉我为什么会这样。

  

public static void compress(String srcPath,String destPath){

    srcFile = new File(srcPath);
    destFile = new File(destPath);
    try {
        fileInputStream = new FileInputStream(srcFile);
        fileOutputStream = new FileOutputStream(destFile);
        zipEntry = new ZipEntry(srcPath);
        zipOutputStream = new ZipOutputStream(fileOutputStream);
        zipOutputStream.putNextEntry(zipEntry);
        byte[] data = new byte[12];
        while ((fileInputStream.read(data)) != -1) {
            zipOutputStream.write(data);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try{
            fileInputStream.close();
        zipOutputStream.close();}catch (Exception e) {
            e.printStackTrace();
        }
    }

}

1 个答案:

答案 0 :(得分:3)

您不应该在zip文件中存储带有驱动器号的路径,因为当您尝试解压缩zip时,它会尝试创建一个包含驱动器名称的目录并失败。

您需要更改代码,以便在创建ZipEntry之前从路径中删除驱动器号。