java实现可压缩或解压缩WAR文件_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java实现可压缩或解压缩WAR文件

java实现可压缩或解压缩WAR文件

 2013/7/25 12:43:05  daoshud1  程序员俱乐部  我要评论(1)
  • 摘要:/***解压缩*@paramwarPath包地址*@paramunzipPath解压后地址*/publicstaticvoidunzip(StringwarPath,StringunzipPath){FilewarFile=newFile(warPath);try{//获得输出流BufferedInputStreambufferedInputStream=newBufferedInputStream(newFileInputStream(warFile))
  • 标签:实现 文件 Java 压缩 解压缩
class="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
  • commons-io-2.0.1.jar (155.8 KB)
  • 下载次数: 0
  • commons-compress-1.5.jar (250.2 KB)
  • 下载次数: 0
    网友 2014/11/25 16:04:39 发表

    请问你这FileUtils类在哪,麻烦您给贴出来

发表评论
用户名: 匿名