当我运行我的代码并使用项目本身资源文件夹中的文件时,我没有遇到任何问题。它成功地压缩文件,我可以使用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();
}
}
}
答案 0 :(得分:3)
您不应该在zip文件中存储带有驱动器号的路径,因为当您尝试解压缩zip时,它会尝试创建一个包含驱动器名称的目录并失败。
您需要更改代码,以便在创建ZipEntry
之前从路径中删除驱动器号。