在Java中实现Zip文件的压缩与解压缩( 二 )
<>();try {Files.walkFileTree(folder, new FileVisitor() {@Overridepublic FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {if (!dir.equals(folder)) {// 开始遍历目录String folder = dir.getFileName().toString();path.addLast(folder);// 写入目录ZipEntry zipEntry = new ZipEntry(path.stream().collect(Collectors.joining("/", "", "/")));try {zipOutputStream.putNextEntry(zipEntry);zipOutputStream.flush();} catch (IOException e) {throw new RuntimeException(e);}}return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {// 开始遍历文件try (InputStream inputStream = Files.newInputStream(file)) {// 创建一个压缩项 , 指定名称String fileName = path.size() > 0? path.stream().collect(Collectors.joining("/", "", "")) + "/" + file.getFileName().toString(): file.getFileName().toString();ZipEntry zipEntry = new ZipEntry(fileName);// 添加到压缩流zipOutputStream.putNextEntry(zipEntry);// 写入数据int len = 0;byte[] buffer = new byte[1024 * 10];while ((len = inputStream.read(buffer)) > 0) {zipOutputStream.write(buffer, 0, len);}zipOutputStream.flush();} catch (IOException e) {throw new RuntimeException(e);}return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {return FileVisitResult.CONTINUE;}@Overridepublic FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {// 结束遍历目录if (!path.isEmpty()) {path.removeLast();}return FileVisitResult.CONTINUE;}});zipOutputStream.closeEntry();} finally {zipOutputStream.close();outputStream.close();} }}【在Java中实现Zip文件的压缩与解压缩】原文:
推荐阅读
- 可与ASML实现联机!国产光刻机传来喜讯,张绍忠预言或成真?
- 烟台港“管道智脑系统”上线 在国内率先实现原油储运全息智能排产
- 计算机专业大一下学期,该选择学习Java还是Python
- 想实现《曼达洛人》的数字布景吗?索尼模块化屏幕即将开售
- 未来想进入AI领域,该学习Python还是Java大数据开发
- 快递员工也能当“教授”?上海快递工程技术高级职称评审实现突破
- 骁龙888首次实现可变分辨率渲染 创造沉浸式游戏体验
- 学习大数据是否需要学习JavaEE
- 柔宇FlexPai 2实现多次重复折叠无折痕,斩获CES 2021创新奖
- 飞步无人车:实现首个混线工况下的自动驾驶集卡编队独立整船作业