java壓縮與解壓(Java.util.zip)
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream;/**
- 文件解壓縮 *
@author Tony / public final class FileToZip {
FileToZip() {
}
/**
- 將存放在sourceFilePath目錄下的源文件,打包成fileName名稱的ZIP文件,并存放到zipFilePath。 *
- @param sourceFilePath
- 待壓縮的文件路徑
- @param zipFilePath
- 壓縮后存放路徑
- @param fileName
- 壓縮后文件的名稱
@return flag */ public static boolean fileToZip(String sourceFilePath, String zipFilePath,
String fileName) {
boolean flag = false; File sourceFile = new File(sourceFilePath); FileInputStream fis = null; BufferedInputStream bis = null; FileOutputStream fos = null; ZipOutputStream zos = null;
if (sourceFile.exists() == false) {
System.out.println(">>>>>> 待壓縮的文件目錄:" + sourceFilePath + " 不存在. <<<<<<");
} else {
try { File zipFile = new File(zipFilePath + "/" + fileName + ".RAR"); // File zipFile = new File(zipFilePath + "/" + fileName + ".zip"); if (zipFile.exists()) { System.out.println(">>>>>> " + zipFilePath + " 目錄下存在名字為:" + fileName + ".RAR" + " 打包文件. <<<<<<"); } else { File[] sourceFiles = sourceFile.listFiles(); if (null == sourceFiles || sourceFiles.length < 1) { System.out.println(">>>>>> 待壓縮的文件目錄:" + sourceFilePath + " 里面不存在文件,無需壓縮. <<<<<<"); } else { fos = new FileOutputStream(zipFile); zos = new ZipOutputStream(new BufferedOutputStream(fos)); byte[] bufs = new byte[1024 * 10]; for (int i = 0; i < sourceFiles.length; i++) { // 創建ZIP實體,并添加進壓縮包 ZipEntry zipEntry = new ZipEntry(sourceFiles[i] .getName()); zos.putNextEntry(zipEntry); // 讀取待壓縮的文件并寫進壓縮包里 fis = new FileInputStream(sourceFiles[i]); bis = new BufferedInputStream(fis, 1024 * 10); int read = 0; while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) { zos.write(bufs, 0, read); } } flag = true; } } } catch (FileNotFoundException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } finally { // 關閉流 try { if (null != bis) bis.close(); if (null != zos) zos.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } }
}
return flag; }
public static void unZip(String sourceFilePath, String unzipFilePath) { File sourceFile = new File(sourceFilePath); ZipFile zipFile = null; ZipEntry zipEntry = null; ZipInputStream zis = null; FileOutputStream fos = null; FileInputStream fis = null;
if (sourceFile.exists() == false) {
System.out.println(">>>>>> 待解壓的文件目錄:" + sourceFilePath + " 不存在. <<<<<<");
} else {
try { System.out.println(">>>>>> 開始解壓:" + sourceFilePath + " <<<<<<"); zipFile = new ZipFile(sourceFile); zis = new ZipInputStream(new FileInputStream(sourceFile)); while ((zipEntry = zis.getNextEntry()) != null) { String fileName = zipEntry.getName(); File temp = new File(unzipFilePath + "\\" + fileName); System.out.println(fileName + ">>>>>>解壓到" + unzipFilePath); if (!temp.getParentFile().exists()) { temp.getParentFile().mkdirs(); } fos = new FileOutputStream(temp); InputStream is = zipFile.getInputStream(zipEntry); int len = 0; while ((len = is.read()) != -1) { fos.write(len); } is.close(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ZipException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { // 關閉流 try { if (null != fos) fos.close(); if (null != fis) fis.close(); if (null != zis) zis.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } }
}
}
/**
- 將文件打包成ZIP壓縮文件,main方法測試 *
- @param args
*/
public static void main(String[] args) {
String sourceFilePath = "D:\sss\lp20120301.rar";
// String zipFilePath = "D:\sss";
// String fileName = "lp20120301";
// boolean flag = FileToZip.fileToZip(sourceFilePath, zipFilePath,
// fileName);
// if(flag) {
// System.out.println(">>>>>> 文件打包成功. <<<<<<");
// } else {
// System.out.println(">>>>>> 文件打包失敗. <<<<<<");
// }
FileToZip.unZip(sourceFilePath, "E:\sdf");
}
}</pre>
本文由用戶 ye34 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!