91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何在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

南宫市| 蕲春县| 沐川县| 辛集市| 甘洛县| 普兰店市| 海淀区| 泽州县| 邵阳县| 光山县| 巧家县| 余干县| 南澳县| 三台县| 徐水县| 怀集县| 成武县| 富顺县| 武穴市| 古交市| 四川省| 北辰区| 特克斯县| 顺平县| 宝山区| 六盘水市| 淮北市| 镇雄县| 凤冈县| 吉水县| 台北市| 密云县| 富源县| 米林县| 鹿邑县| 教育| 三明市| 台中县| 盐山县| 富顺县| 黎平县|