如何在Java中利用zip实现压缩和解压缩-创新互联

这篇文章主要介绍了如何在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实现压缩和解压缩,如何觉得创新互联建站的内容还不错,欢迎将创新互联建站推荐给身边好友。

本文名称:如何在Java中利用zip实现压缩和解压缩-创新互联
文章链接:https://www.cdcxhl.com/article14/dhicde.html

成都网站建设公司_创新互联,为您提供品牌网站建设网站营销网站策划服务器托管网站改版定制网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设