java两种方式压缩文件到zip文件内

简介: java两种方式压缩文件到zip文件内
public static void createZipFile(String file) {
        try {
            ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(new File(file)));
            BufferedImage buffImg = ImageIO.read(new File(""));
            ZipEntry entry = new ZipEntry("test.zip");
            zipOutputStream.putNextEntry(entry);
            ImageIO.write(buffImg, "jpg", zipOutputStream);
            zipOutputStream.flush();
            zipOutputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

另一种方式:

        
        private static void compressImageToZip(String basicRootDir, File file, ZipOutputStream out) {
            FileInputStream in = null;
            ZipEntry entry = null;
            byte[] buffer = new byte[4096];                            
            int bytes_read;
            if (file.isFile()) {
                try {
                    in = new FileInputStream(file);                     // 创建一个文件输入流
                    // 根据压缩文件的名字构造一个ZipEntry对象,此类表示zip包中的文件条目
                    entry = new ZipEntry(getFileName(basicRootDir, file));
                    out.putNextEntry(entry);                         // 存储项信息到压缩文件
                    // 将文件的内容通过字节数组复制到压缩文件中
                    while ((bytes_read = in.read(buffer)) != -1) {
                        out.write(buffer, 0, bytes_read);
                    }
                    out.closeEntry();
                    in.close();
                    System.out
                            .println("添加文件" + file.getAbsolutePath() + "到ZIP文件中!");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        private static String getFileName(String basicRootDir, File file) {    // 获取等待压缩的文件的文件名
            if (!basicRootDir.endsWith(File.separator)) {
                basicRootDir += File.separator;
            }
            String filePath = file.getAbsolutePath();
            
            if (file.isDirectory()) {            // 对于目录,必须在entry名字后面加上"/",表示它将以目录项存储
                filePath += "/";
            }
            int index = filePath.indexOf(basicRootDir);
            return filePath.substring(index + basicRootDir.length());
        }
相关文章
|
1天前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
7 1
|
1天前
|
存储 监控 Java
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
4 0
|
1天前
|
XML Java 定位技术
详尽分享经纬坐标(BLH)数据创建.kml文件小工具设计Java版
详尽分享经纬坐标(BLH)数据创建.kml文件小工具设计Java版
|
2天前
|
Java API 开发者
如何在Java中实现高效的文件读写
如何在Java中实现高效的文件读写
|
2天前
|
Java 机器人 程序员
Java中的文件I/O操作:流、读写和NIO详解
Java中的文件I/O操作:流、读写和NIO详解
|
2天前
|
Java 测试技术 数据库
【单文件版本】java SpringBoot 切换不同的运行环境(生产环境、开发环境、测试环境)SpringBoot配置多个不同运营环境
【单文件版本】java SpringBoot 切换不同的运行环境(生产环境、开发环境、测试环境)SpringBoot配置多个不同运营环境
9 0
|
2天前
|
XML Java 数据格式
java删除xml文件内容
java删除xml文件内容
5 0
|
2天前
|
Java 机器人 程序员
Java中的线程通信:wait、notify与Condition详解
Java中的线程通信:wait、notify与Condition详解
|
2天前
|
存储 安全 Java
Java中的线程安全与同步技术
Java中的线程安全与同步技术
|
1天前
|
监控 Java 调度
Java并发编程:深入理解线程池
【6月更文挑战第26天】在Java并发编程的世界中,线程池是提升应用性能、优化资源管理的关键组件。本文将深入探讨线程池的内部机制,从核心概念到实际应用,揭示如何有效利用线程池来处理并发任务,同时避免常见的陷阱和错误实践。通过实例分析,我们将了解线程池配置的策略和对性能的影响,以及如何监控和维护线程池的健康状况。
6 1