【发布时间】:2015-05-12 06:44:11
【问题描述】:
请看下面的代码。
public void startCompress(String path,String fileName,String outputLocation,int compressType,int filSize) throws Exception
{
System.out.println("Input Location: "+path);
System.out.println("Output Location: "+outputLocation);
System.out.println(compressType);
byte[] bs=new byte[filSize];
System.out.println(filSize);
FileOutputStream fos=new FileOutputStream(outputLocation+"/test.zip");
System.out.println(fos.toString());
ZipOutputStream zos=new ZipOutputStream(fos);
ZipEntry ze = new ZipEntry(fileName);
zos.putNextEntry(ze);
FileInputStream inputStream=new FileInputStream(path);
int len;
while((len=inputStream.read(bs))>0){
zos.write(bs, 0, len);
}
inputStream.close();
zos.closeEntry();
zos.close();
}
在上面的代码中,我们使用java.util.zip 包来压缩一个文件。但是我们有一个问题。也就是说,如果我们选择多个文件,那么只有一个文件被压缩。如果我们选择一个文件夹,压缩根本不起作用。
如何解决此问题以压缩文件、文件、文件夹、文件夹甚至嵌套文件夹? Java zip 包支持 .zip、.tar、.tarGz 和 tarZ。因此,解决方案也不应该仅限于 .zip 扩展名。
【问题讨论】:
-
@SercanOzdemir:他的例子不同,我们还必须确定选择的是文件还是文件夹..
-
@MadProgrammer:很高兴你在这里。你能帮我一些代码示例吗?
-
@JustCause 看看两个链接的例子(更新评论)
标签: java io compression zip fileinputstream