Java处理ZIP文件的压缩与解压

<p>压缩文件方法:</p> <div> <pre><span style="color: #008000">/** * 将文件压缩成zip文件 * @param fileName 需要压缩的文件 * @param createZip 生成压缩文件的目录 * @throws IOException */</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> encodeZip(String fileName,String createZip) <span style="color: #0000ff">throws</span> IOException{ File files = <span style="color: #0000ff">new</span> File(fileName); ZipOutputStream zo = <span style="color: #0000ff">new</span> ZipOutputStream(<span style="color: #0000ff">new</span> FileOutputStream(createZip)); encodeFiles(zo,files,&quot;<span style="color: #8b0000"></span>&quot;); zo.close(); } <span style="color: #008000">/** * 递归压缩每一个文件 * @param zo * @param file * @param dir * @throws IOException */</span> <span style="color: #0000ff">private</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> encodeFiles(ZipOutputStream zo, File file, String dir) <span style="color: #0000ff">throws</span> IOException { <span style="color: #008000">// TODO Auto-generated method stub</span> <span style="color: #0000ff">if</span>(file.isDirectory()){ <span style="color: #0000ff">for</span>(File singleFile : file.listFiles()){ <span style="color: #0000ff">if</span>(&quot;<span style="color: #8b0000"></span>&quot;.equals(dir)){ encodeFiles(zo,singleFile,file.getName()); }<span style="color: #0000ff">else</span>{ encodeFiles(zo,singleFile,dir + &quot;<span style="color: #8b0000">\\</span>&quot; + file.getName()); } } }<span style="color: #0000ff">else</span>{ ZipEntry entry = <span style="color: #0000ff">null</span>; String path = &quot;<span style="color: #8b0000"></span>&quot;; <span style="color: #0000ff">if</span>(&quot;<span style="color: #8b0000"></span>&quot;.equals(dir)){ path = file.getName(); }<span style="color: #0000ff">else</span>{ path = dir + &quot;<span style="color: #8b0000">\\</span>&quot; + file.getName(); } entry = <span style="color: #0000ff">new</span> ZipEntry(path); zo.putNextEntry(entry); InputStream in = <span style="color: #0000ff">new</span> FileInputStream(file); <span style="color: #0000ff">int</span> len = 0; <span style="color: #0000ff">while</span>((len = in.read()) != -1){ zo.write(len); } in.close(); } }</pre> </div>

<br />

<p></p>

<p>解压缩方法:</p>

<div> <pre><span style="color: #008000">/** * 将压缩文件解压 * @param zipFileName 需要解压的zip文件 * @param unpackName 解压到的路径 * @throws ZipException * @throws IOException */</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">void</span> decodeZip(String zipFileName,String unpackName) <span style="color: #0000ff">throws</span> ZipException, IOException{ File file = <span style="color: #0000ff">new</span> File(zipFileName); ZipFile zipFile = <span style="color: #0000ff">new</span> ZipFile(file); ZipInputStream zi = <span style="color: #0000ff">new</span> ZipInputStream(<span style="color: #0000ff">new</span> FileInputStream(file)); ZipEntry entry = <span style="color: #0000ff">null</span>; <span style="color: #0000ff">while</span>((entry = zi.getNextEntry()) != <span style="color: #0000ff">null</span>){ String fileName = entry.getName(); File newFile = <span style="color: #0000ff">new</span> File(unpackName + &quot;<span style="color: #8b0000">\\</span>&quot; + fileName); <span style="color: #0000ff">if</span>(!newFile.getParentFile().exists()){ newFile.getParentFile().mkdirs(); } OutputStream op = <span style="color: #0000ff">new</span> FileOutputStream(newFile); InputStream in = zipFile.getInputStream(entry); <span style="color: #0000ff">int</span> len = 0; <span style="color: #0000ff">while</span>((len = in.read()) != -1){ op.write(len); } op.close(); in.close(); } }</pre> </div>

转载于:https://my.oschina.net/sorthWindow/blog/111716

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值