/**
* 解壓縮
* @param warPath 包位址
* @param unzipPath 解壓後位址
*/
public static void unzip(String warPath, String unzipPath) {
File warFile = new File(warPath);
try {
//獲得輸出流
BufferedInputStream bufferedInputStream = new BufferedInputStream(
new FileInputStream(warFile));
ArchiveInputStream in = new ArchiveStreamFactory()
.createArchiveInputStream(ArchiveStreamFactory.JAR,
bufferedInputStream);
JarArchiveEntry entry = null;
//循環周遊解壓
while ((entry = (JarArchiveEntry) in.getNextEntry()) != null) {
if (entry.isDirectory()) {
new File(unzipPath, entry.getName()).mkdir();
} else {
OutputStream out = FileUtils.openOutputStream(new File(
unzipPath, entry.getName()));
IOUtils.copy(in, out);
out.close();
}
}
in.close();
} catch (FileNotFoundException e) {
System.err.println("未找到war檔案");
} catch (ArchiveException e) {
System.err.println("不支援的壓縮格式");
} catch (IOException e) {
System.err.println("檔案寫入發生錯誤");
}
}
/**
* 壓縮
* @param destFile 建立的位址及名稱
* @param zipDir 要打包的目錄
*/
public static void zip(String destFile, String zipDir) {
File outFile = new File(destFile);
try {
outFile.createNewFile();
//建立檔案
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
new FileOutputStream(outFile));
ArchiveOutputStream out = new ArchiveStreamFactory()
.createArchiveOutputStream(ArchiveStreamFactory.JAR,
bufferedOutputStream);
if (zipDir.charAt(zipDir.length() - 1) != '/') {
zipDir += '/';
}
Iterator<File> files = FileUtils.iterateFiles(new File(zipDir),
null, true);
while (files.hasNext()) {
File file = files.next();
ZipArchiveEntry zipArchiveEntry = new ZipArchiveEntry(file,
file.getPath().replace(zipDir.replace("/", "\\"), ""));
out.putArchiveEntry(zipArchiveEntry);
IOUtils.copy(new FileInputStream(file), out);
out.closeArchiveEntry();
}
out.finish();
out.close();
} catch (IOException e) {
System.err.println("建立檔案失敗");
} catch (ArchiveException e) {
System.err.println("不支援的壓縮格式");
}
}
public static void main(String[] args) {
// WarUtils.unzip("g:\\data.war", "g:\\data");
WarUtils.zip("g:\\cba.war", "g:\\data");
}
需要用到commons-io-2.0.1.jar commons-compress-1.5.jar
- commons-io-2.0.1.jar (155.8 KB)
- 下載下傳次數: 135
- commons-compress-1.5.jar (250.2 KB)
- 下載下傳次數: 168