`
daoshud1
  • 浏览: 550328 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java实现zip压缩、解压

    博客分类:
  • java
阅读更多
/**
	 * 解压缩
	 * @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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics