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());
        }
相关文章
|
10天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
39 2
|
14天前
|
存储 缓存 安全
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见
在 Java 编程中,创建临时文件用于存储临时数据或进行临时操作非常常见。本文介绍了使用 `File.createTempFile` 方法和自定义创建临时文件的两种方式,详细探讨了它们的使用场景和注意事项,包括数据缓存、文件上传下载和日志记录等。强调了清理临时文件、确保文件名唯一性和合理设置文件权限的重要性。
36 2
|
23天前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
|
24天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
33 4
|
Java 大数据 Apache
|
Java Windows 移动开发
|
Java
JAVA读取文件的几种方法
喜欢的朋友可以关注下,粉丝也缺。 InputStreamReader+BufferedReader读取字符串 InputStreamReader 将字节流转换为字符流。
1292 0
|
Java Windows 移动开发
[Java]读取文件方法大全
1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容 4、随机读取文件内容  public class ReadFromFile {    /**     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
681 0
|
Java
[Java]读取文件方法大全
1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容 4、随机读取文件内容 public class ReadFromFile {    /**     * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
707 0
下一篇
无影云桌面