亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Apache Commons Compress

2019-11-11 07:49:29
字體:
來源:轉載
供稿:網友

       Apache Commons是Apache軟件基金會的項目,曾隸屬于Jakarta項目。Commons的目的是提供可重用的、開源的java代碼。Apache Commons包含了很多開源的工具,用于解決平時編程經常會遇到的問題,減少重復勞動。

ComPRess

       本例主要介紹組件Compress,Compress是ApacheCommons提供壓縮、解壓縮文件的類庫,可以操作ar, cpio, Unix dump, tar, zip,gzip, XZ, Pack200 and bzip2格式的文件,功能比較強大。本例主要演示Compress操作對zip文件壓縮與解壓縮的操作。commons-compress-1.13-bin.zip 下載!

1、文件壓縮成zip格式壓縮包

         /**	 * 將文件打包成zip壓縮包文件	 */	private static void compressFiles2Zip(){		long startInt = System.currentTimeMillis();		File file1 = new File("D://logs//log4j.log");		File file2 = new File("D://logs//log4j.log.2016-07-31-19");				List<File> files = new ArrayList<File>();		files.add(file1);		files.add(file2);		File zipFile = new File("D://logs//log4j.log.zip");		InputStream inputStream = null;		ZipArchiveOutputStream zipArchiveOutputStream = null;		try {			zipArchiveOutputStream = new ZipArchiveOutputStream(zipFile);			zipArchiveOutputStream.setUseZip64(Zip64Mode.AsNeeded);			for(File file : files){				//將每個文件用ZipArchiveEntry封裝,使用ZipArchiveOutputStream寫到壓縮文件				ZipArchiveEntry zipArchiveEntry = new ZipArchiveEntry(file, "test"+File.separator+file.getName());				zipArchiveOutputStream.putArchiveEntry(zipArchiveEntry);								inputStream = new FileInputStream(file);				byte[] buffer = new byte[1024 * 5]; 				int len = -1;				while((len = inputStream.read(buffer)) != -1) {					//把緩沖區的字節寫入到ZipArchiveEntry					zipArchiveOutputStream.write(buffer, 0, len);				}			}			zipArchiveOutputStream.closeArchiveEntry();			zipArchiveOutputStream.finish();		} catch (IOException e) {//			e.printStackTrace();		}finally{			//關閉輸入流			if(null!=inputStream){				try {					inputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}			//關閉輸出流			if(null!=zipArchiveOutputStream){				try {					zipArchiveOutputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}		}		System.out.println("耗時:"+(System.currentTimeMillis()-startInt)+"毫秒");	}

2、zip壓縮包解壓成文件到指定文件夾

        /**	 * 將zip壓縮包解壓成文件到指定文件夾	 */	private static void decompressZip2Files(){		long startInt = System.currentTimeMillis();		String zipFilePath = "D://logs//log4j.log.zip";		File zipFile = new File(zipFilePath);		InputStream inputStream = null;		OutputStream outputStream = null;		//zip文件輸入流		ZipArchiveInputStream zipArchiveInputStream = null;		ArchiveEntry archiveEntry = null;		try {			inputStream = new FileInputStream(new File(zipFilePath));			zipArchiveInputStream = new ZipArchiveInputStream(inputStream,"UTF-8");			while(null!=(archiveEntry = zipArchiveInputStream.getNextEntry())){				//獲取文件名				String archiveEntryFileName = archiveEntry.getName();				//構造解壓后文件的存放路徑				String archiveEntryPath = "D://logs//test//" + archiveEntryFileName;				byte[] content = new byte[(int) archiveEntry.getSize()];				zipArchiveInputStream.read(content);				//把解壓出來的文件寫到指定路徑				File entryFile  = new File(archiveEntryPath);				if(!entryFile.exists()){					entryFile.getParentFile().mkdirs();				}				outputStream = new FileOutputStream(entryFile);				outputStream.write(content);				outputStream.flush();			}		} catch (FileNotFoundException e) {//			e.printStackTrace();		} catch (IOException e) {//			e.printStackTrace();		}finally{			if(null!=outputStream){				try {					outputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}			if(null!=zipArchiveInputStream){				try {					zipArchiveInputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}			if(null!=inputStream){				try {					inputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}		}		System.out.println("耗時:"+(System.currentTimeMillis()-startInt)+"毫秒");	}

       以上分別演示zip文件壓縮和解壓縮的過程,以下將zip文件壓縮和解壓縮抽取成公共方法,但是其中未添加文件格式校驗等操作,需要讀者自行補充。

package com.mahaochen.apache.commons.Compress;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.io.OutputStream;import org.apache.commons.compress.archivers.ArchiveEntry;import org.apache.commons.compress.archivers.zip.Zip64Mode;import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;public class CommCompressZipFileUtil {	/**	 * 將文件打包成zip壓縮包文件	 * @param files	 * @param targetFilePath	 * @return	 */	public boolean compressFiles2Zip(File[] files,String targetFilePath){				InputStream inputStream = null;		ZipArchiveOutputStream zipArchiveOutputStream = null;		try {			File zipFile = new File(targetFilePath);			zipArchiveOutputStream = new ZipArchiveOutputStream(zipFile);			//Use Zip64 extensions for all entries where they are required			zipArchiveOutputStream.setUseZip64(Zip64Mode.AsNeeded);			for(File file : files){				//將每個文件用ZipArchiveEntry封裝,使用ZipArchiveOutputStream寫到壓縮文件				ZipArchiveEntry zipArchiveEntry = new ZipArchiveEntry(file, file.getName());				zipArchiveOutputStream.putArchiveEntry(zipArchiveEntry);								inputStream = new FileInputStream(file);				byte[] buffer = new byte[1024 * 5]; 				int len = -1;				while((len = inputStream.read(buffer)) != -1) {					//把緩沖區的字節寫入到ZipArchiveEntry					zipArchiveOutputStream.write(buffer, 0, len);				}			}			zipArchiveOutputStream.closeArchiveEntry();			zipArchiveOutputStream.finish();		} catch (IOException e) {//			e.printStackTrace();			return false;		}finally{			//關閉輸入流			if(null!=inputStream){				try {					inputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}			//關閉輸出流			if(null!=zipArchiveOutputStream){				try {					zipArchiveOutputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}		}		return true;	}		/**	 * 將zip壓縮包解壓成文件到指定文件夾	 * @param zipFilePath	 * @param targetDirPath	 * @return	 */	public boolean decompressZip2Files(String zipFilePath,String targetDirPath){				InputStream inputStream = null;		OutputStream outputStream = null;		//zip文件輸入流		ZipArchiveInputStream zipArchiveInputStream = null;		ArchiveEntry archiveEntry = null;		try {			File zipFile = new File(zipFilePath);			inputStream = new FileInputStream(zipFile);			zipArchiveInputStream = new ZipArchiveInputStream(inputStream,"UTF-8");						while(null!=(archiveEntry = zipArchiveInputStream.getNextEntry())){				//獲取文件名				String archiveEntryFileName = archiveEntry.getName();				//構造解壓后文件的存放路徑				String archiveEntryPath = targetDirPath + archiveEntryFileName;				//把解壓出來的文件寫到指定路徑				File entryFile  = new File(archiveEntryPath);				if(!entryFile.exists()){					entryFile.getParentFile().mkdirs();				}				byte[] buffer = new byte[1024 * 5];				outputStream = new FileOutputStream(entryFile);				int len = -1;				while((len = zipArchiveInputStream.read(buffer)) != -1){					outputStream.write(buffer,0,len);				}				outputStream.flush();			}		} catch (FileNotFoundException e) {//			e.printStackTrace();			return false;		} catch (IOException e) {//			e.printStackTrace();			return false;		}finally{			if(null!=outputStream){				try {					outputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}			if(null!=zipArchiveInputStream){				try {					zipArchiveInputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}			if(null!=inputStream){				try {					inputStream.close();				} catch (IOException e) {//					e.printStackTrace();				}			}		}		return true;	}}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女网站| 成人黄色av免费在线观看| 国产69精品久久久久9| 国产精品视频1区| 日韩成人网免费视频| 欧美日韩成人网| 日韩在线观看免费高清| 亚洲激情自拍图| 中文字幕亚洲一区二区三区| 欧美做受高潮电影o| 国产精品美女无圣光视频| 一区二区国产精品视频| 91最新在线免费观看| 欧美大奶子在线| 日韩免费视频在线观看| 亚洲91av视频| 日韩免费av一区二区| 国产精品亚洲аv天堂网| 欧美日韩福利视频| 国产午夜精品视频免费不卡69堂| 国产精品视频专区| 一个人看的www久久| 欧美精品videos| 色噜噜国产精品视频一区二区| 国产精品久久久久久久app| 精品性高朝久久久久久久| 国产成人精品日本亚洲专区61| 国产精品18久久久久久首页狼| 欧美极品少妇与黑人| 最好看的2019的中文字幕视频| 亚洲影院在线看| 欧美日韩国产成人在线观看| 疯狂蹂躏欧美一区二区精品| 人体精品一二三区| 538国产精品视频一区二区| 日韩欧美一区二区在线| 国产高清视频一区三区| 欧美激情视频给我| 国产精品精品久久久久久| 色婷婷综合久久久久| 欧美国产在线视频| 国产69精品久久久久9| 成人免费视频在线观看超级碰| 亚洲精品91美女久久久久久久| 亚洲视频视频在线| 成人av在线网址| 韩国欧美亚洲国产| 久久精品99久久久久久久久| 欧美激情亚洲视频| 韩日精品中文字幕| 宅男66日本亚洲欧美视频| 久久久国产在线视频| 久久精品国产免费观看| 日韩av网站在线| 欧美中文字幕视频在线观看| 久久综合国产精品台湾中文娱乐网| 18一19gay欧美视频网站| 久久视频在线播放| 欧美一区三区三区高中清蜜桃| 日韩中文综合网| 日韩最新在线视频| 亚洲一区二区三区四区在线播放| 高潮白浆女日韩av免费看| 青青草99啪国产免费| 久久久女女女女999久久| 国产91网红主播在线观看| 亚洲精品综合久久中文字幕| 97超视频免费观看| 视频在线观看一区二区| 国产精品久久久久久五月尺| 欧美黄色三级网站| 国产日韩精品一区二区| 亚洲国产成人精品电影| 久久夜色精品国产欧美乱| 欧美国产日韩视频| 亚洲在线免费视频| 久久免费视频这里只有精品| 78色国产精品| 97视频免费观看| 日韩av在线网页| 北条麻妃久久精品| 亚洲第一福利网| 成人日韩av在线| 精品国产一区二区三区久久久狼| 国产一区二区三区视频| 91久久久久久久久久久| 欧美xxxx做受欧美.88| 亚洲美女福利视频网站| 亚洲国产三级网| 岛国av一区二区| 久久激情视频免费观看| 国产精品入口尤物| 国内外成人免费激情在线视频| 成人疯狂猛交xxx| 98午夜经典影视| 国产精品久久久久久久久影视| 97超级碰碰碰久久久| 日韩h在线观看| 亚洲人成网站在线播| 国产精品一区二区三区免费视频| 最近2019年中文视频免费在线观看| 国产欧美一区二区三区四区| 国产一区二区在线免费| 在线午夜精品自拍| 国产一区二区三区网站| 欧美性高跟鞋xxxxhd| 欧美一区二区三区图| 日韩欧美在线视频日韩欧美在线视频| 国产日韩精品电影| 最近中文字幕mv在线一区二区三区四区| 欧美在线观看www| 欧洲成人午夜免费大片| 精品少妇一区二区30p| 日韩精品一区二区三区第95| 久久久精品免费视频| 精品在线观看国产| 亚洲人免费视频| 亚洲一级一级97网| 亚洲国产成人久久| 国产精品视频自在线| 亚洲成人网在线观看| 这里只有精品视频| 97久久精品人人澡人人爽缅北| 国产精品一区二区久久久| 久久久999精品视频| 日韩激情av在线播放| 国产www精品| 亚洲综合日韩中文字幕v在线| 亚洲第一色中文字幕| 亚洲人成电影网站色…| 精品国产欧美一区二区五十路| 色阁综合伊人av| 久久在线免费视频| 成人a在线视频| 精品国产一区二区三区四区在线观看| 欧美—级a级欧美特级ar全黄| 欧洲日本亚洲国产区| 欧美在线视频在线播放完整版免费观看| 日韩69视频在线观看| 国产成人在线亚洲欧美| 亚洲va久久久噜噜噜久久天堂| 亚洲欧美另类国产| 日韩精品极品毛片系列视频| 色综合男人天堂| 精品国产91久久久久久| 欧美亚洲一区在线| 久久久久久亚洲精品| 在线观看久久久久久| 国产精品免费看久久久香蕉| 日韩免费av在线| 国产91精品最新在线播放| 亚洲免费av电影| 久久久久国产一区二区三区| 欧美一区二区三区……| 欧美日本国产在线| 亚洲国产一区二区三区四区| 国产激情999| 亚洲人成在线观| 91亚洲精品一区二区| 精品久久久久久久久久久久| 亚洲第一视频网| 欧美日韩国产一区二区| 国产午夜精品麻豆| 日韩有码视频在线|