<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,"<span style="color: #8b0000"></span>"); 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>("<span style="color: #8b0000"></span>".equals(dir)){ encodeFiles(zo,singleFile,file.getName()); }<span style="color: #0000ff">else</span>{ encodeFiles(zo,singleFile,dir + "<span style="color: #8b0000">\\</span>" + file.getName()); } } }<span style="color: #0000ff">else</span>{ ZipEntry entry = <span style="color: #0000ff">null</span>; String path = "<span style="color: #8b0000"></span>"; <span style="color: #0000ff">if</span>("<span style="color: #8b0000"></span>".equals(dir)){ path = file.getName(); }<span style="color: #0000ff">else</span>{ path = dir + "<span style="color: #8b0000">\\</span>" + 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 + "<span style="color: #8b0000">\\</span>" + 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>