2011-11-08 27 views
1

我有一个问题把一个文件夹放在一个zip文件我想创建。虽然路径是有效的,但是当我运行代码时,它会给我一个“文件未找到异常”。 这里是我的代码把一个文件夹放在一个邮编在爪哇

String outFilename = "outfile.zip"; 
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename)); 
byte[] buf = new byte[1024]; 
File file = new File("workspace"); 
System.out.println(file.isDirectory()); 
System.out.println(file.getAbsolutePath()); 
FileInputStream in = new FileInputStream(file.getAbsolutePath()); 
out.putNextEntry(new ZipEntry(file.getAbsolutePath())); 
int len; 
while ((len = in.read(buf)) > 0) { 
out.write(buf, 0, len); 
} 

out.closeEntry(); 
in.close(); 
+0

你试图添加一个空文件夹,或者你是否试图添加一个文件夹中的所有包含文件递归? –

回答

1

你试图读取目录字节;它不这样工作。这个例外也是如此。

您需要添加目录,然后在目录中添加每个文件。如果使用文件路径,则不需要显式添加目录。

我会是警惕使用绝对路径作为zip条目;更好地使用相对路径,以便您可以将其解压缩到任何位置,而不会冒险覆盖您想要的内容。

+0

所以我需要几乎完全重新创建目录中的文件结构,还是只需要执行顶层? –

+0

@JeremyKaplan你需要递归地旋转目录并分别添加每个条目。不过,这并不困难很多。 –

+1

@JeremyKaplan得到一些复制粘贴练习的人http://www.java-examples.com/create-zip-file-directory-recursively-using-zipoutputstream-example –