中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Java中利用zip實現壓縮和解壓縮

發布時間:2021-02-25 14:33:02 來源:億速云 閱讀:228 作者:戴恩恩 欄目:開發技術

這篇文章主要介紹了如何在Java中利用zip實現壓縮和解壓縮,億速云小編覺得不錯,現在分享給大家,也給大家做個參考,一起跟隨億速云小編來看看吧!

Java是什么

Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。

zip壓縮

待壓縮文件目錄結構:

如何在Java中利用zip實現壓縮和解壓縮

每個zip文件項都要對應一個ZipEntry,然后通過ZipOutputStream的putNextEntry方法開始寫入一個新的zip文件項,將文件數據發送到zip輸出流中,完成后再調用closeEntry方法。

@Test
public void testCompressByZip() {
	try (
		//指定壓縮完成后zip文件的存儲路徑
		ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream("F:\\myFavorites.zip"))
	)
	{
		//待壓縮文件/目錄所在的目錄
		File fileFolder = new File("F:\\我的收藏");
		//獲取目錄下的所有文件
		File[] files = fileFolder.listFiles();

		ZipEntry zipEntry;
		byte[] byteArray;
		int len;
		//遍歷目錄下的所有文件/目錄,并將它們添加到壓縮文件中
		for (File file : files) {
			//一個ZipEntry對應壓縮文件中的一項
			zipEntry = new ZipEntry(file.getName());
			zipOutputStream.putNextEntry(zipEntry);
			try (FileInputStream in = new FileInputStream(file)) {
				byteArray = new byte[1024];
				while ((len = in.read(byteArray)) != -1) {
					zipOutputStream.write(byteArray, 0, len);
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
			zipOutputStream.closeEntry();
		}
	} catch (IOException ex) {
		ex.printStackTrace();
	}
}

壓縮結果:

如何在Java中利用zip實現壓縮和解壓縮

zip解壓縮

遍歷zip文件中的所有項,并獲取對應項的輸入流,然后通過FileOutputStream輸出到指定目錄中。

@Test
public void testDecompressByZip() {
	try (
		//指定需要解壓縮的zip文件
		ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream("F:\\myFavorites.zip"))
	)
	{
		ZipEntry zipEntry;
		byte[] byteArray;
		int len;
		//遍歷zip文件中的所有項,并逐個解壓到指定的目錄中
		while ((zipEntry = zipInputStream.getNextEntry()) != null) {
			try (FileOutputStream fileOutputStream = new FileOutputStream("F:\\我的解壓目錄\\" + zipEntry.getName())) {
				byteArray = new byte[1024];
				while ((len = zipInputStream.read(byteArray)) != -1) {
					fileOutputStream.write(byteArray, 0, len);
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		}
	} catch (IOException ex) {
		ex.printStackTrace();
	}
}

解壓縮結果:

如何在Java中利用zip實現壓縮和解壓縮

使用FileSystem解壓縮

  • 建立一個文件系統,包含zip文件中的所有項。

  • 遍歷zip文件中的所有項,通過文件訪問器SimpleFileVisitor將每個項復制到指定目錄中。

@Test
public void testDecompressByZip2(){
	try {
		//將壓縮文件作為一個文件系統訪問
		FileSystem fileSystem = FileSystems.newFileSystem(Paths.get("F:\\myFavorites.zip"), null);
		//遍歷壓縮文件中的內容,并使用文件訪問器訪問所有內容
		Files.walkFileTree(fileSystem.getPath("/"), new SimpleFileVisitor<Path>() {
			@Override
			public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
				System.out.println("訪問目錄中文件時調用");
				//將文件解壓到指定目錄
				Files.copy(file, new FileOutputStream("F:\\我的解壓目錄\\" + file.getName(file.getNameCount() - 1)));
				return FileVisitResult.CONTINUE;
			}

			@Override
			public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
				System.out.println("訪問目錄中文件之前調用");
				return FileVisitResult.CONTINUE;
			}

			@Override
			public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
				System.out.println("訪問目錄中文件失敗時調用");
				return FileVisitResult.SKIP_SUBTREE;
			}

			@Override
			public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
				System.out.println("訪問目錄中的文件及其所有后代之后調用");
				return FileVisitResult.CONTINUE;
			}
		});
	} catch (IOException ex) {
		ex.printStackTrace();
	}
}

以上就是億速云小編為大家收集整理的如何在Java中利用zip實現壓縮和解壓縮,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

息烽县| 金塔县| 福海县| 汤原县| 隆安县| 项城市| 扎赉特旗| 伊春市| 印江| 宜丰县| 依兰县| 甘孜| 平顶山市| 琼中| 如皋市| 拉孜县| 永年县| 汉中市| 根河市| 什邡市| 喀喇沁旗| 翁源县| 西充县| 蒲江县| 上饶市| 常山县| 桐乡市| 吴桥县| 雅安市| 武夷山市| 深州市| 安宁市| 铜山县| 涿鹿县| 政和县| 彭阳县| 休宁县| 昌宁县| 准格尔旗| 张家界市| 平塘县|