在 Java 中:如何从 byte[] 数组中压缩文件?

2023-12-03

我的应用程序通过 SMTP 服务器接收电子邮件。电子邮件中有一个或多个附件,电子邮件附件以 byte[] 形式返回(使用 sun javamail api)。

我试图即时压缩附件文件,而不先将它们写入磁盘。

实现这一结果的可能方法是什么?


您可以使用 Java 的 java.util.zip.ZipOutputStream 在内存中创建 zip 文件。例如:

public static byte[] zipBytes(String filename, byte[] input) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ZipOutputStream zos = new ZipOutputStream(baos);
    ZipEntry entry = new ZipEntry(filename);
    entry.setSize(input.length);
    zos.putNextEntry(entry);
    zos.write(input);
    zos.closeEntry();
    zos.close();
    return baos.toByteArray();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中:如何从 byte[] 数组中压缩文件? 的相关文章

随机推荐

  • LDAP 查询不适用于组域用户

    我运行一个查询 memberof CN Domain Users DC MYDOMAIN DC MYCOM 但它返回零结果 如果我为其他组运行相同的查询 它会返回结果 据我了解 当您创建用户时 它默认是Domain Users 你在中看不到
  • 如何使用 Grunt.js (0.3.x) 连接和缩小多个 CSS 和 JavaScript 文件

    注意 这个问题仅与 Grunt 0 3 x 相关 仅供参考 有关最新 Grunt 1 x 版本的帮助 请参阅我在这个问题下面的评论 我目前正在尝试使用 Grunt js 设置自动构建过程 首先连接然后缩小 CSS 和 JavaScript
  • 如何设置 .pdf 中的字体设置,通过 MATLAB 和 LATEX 发布

    在尝试发布 m MATLAB 代码的 pdf 文件时 方程 用 Latex 编写 未以适当 平滑 的字体正确呈现 而是字体看起来分散 我确实尝试通过减小编辑器的字体大小来解决问题 但这没有用 例如 MATLAB代码为 a 从上图看 rho
  • 如何通过代码打开多个网址,我们有一个代码,但它只适用于一个网址

    我们有以下脚本 我们正在谷歌脚本编辑器中运行它 它工作正常 但它只打开一个网址 如果我们想打开多个网址 我们该怎么做 函数是 function myFunction var js var html HtmlService createHtm
  • 设置打印机首选项 - 页面方向为横向

    我想将页面方向设置为 LandScape 以便从我的 excel Vsto 项目打印 excel 工作表 手动设置页面方向打印机首选项从 打印 表单弹出的窗口 我需要一些自动化 每次用户发出打印命令时都会将方向设置为景观 我注意到如果我将方
  • 从数据存储区读取(跨组)实体时发生 TransactionFailedError(争用过多...)

    我再次调查意外发生的情况TransactionFailedError too much contention on these datastore entities 在某些情况下 代码仅读取因争用问题而被归咎的实体组 Setup GAE 标
  • C 中语句 z=++x||++y&&++z 的运算符优先级

    我正在研究运算符优先级 但我无法理解x became 2以及y and z is 1 x y z 1 z x y z 这评估为 x 2 y 1 z 1 优先级高于 因此分配的整个 RHS 归结为增量x以及对真值的评估 1 z x y z t
  • 正则表达式从字符串中获取日期

    我需要一个正则表达式来从以下字符串中获取日期 anything 2011 01 17 16 50 19 xml 这是正确的吗 0 9 0 9 xml 这里检查格式 YYYY MM DD HH MM SS d 4 d 2 2 d 2 d 2
  • Selenium/python - 无法找到部分链接文本

    在 Windows 10 上运行 Chrome 驱动程序 作为脚本和来自 python REPL 的带有 Python 2 7 的 Selenium 无法通过部分链接文本找到元素 我不确定为什么 当我查看相关网页的源代码时 只有一个实例WO
  • 我可以仅在周围没有文字时选择 吗?

    我想仅在锚标记完全独立时才选择它们 这样我可以使它们看起来像按钮 而不会使句子中的锚看起来像按钮 我不想添加额外的类 因为这是在 CMS 中进行的 我最初是在尝试这个 article p a first child last child b
  • POST请求神秘地变成了GET请求

    我有一个带有 unicorn 和 nginx 的 Rails 4 1 应用程序 但不知何故 神秘的是我的 POST 请求变成了 GET 请求 这是请求标头 Remote Address lt
  • 在 Swift 中将 JSON 字符串转换为对象的简单而干净的方法

    我花了几天时间寻找如何将一个相当简单的 JSON 字符串转换为 Swift 中的对象类型 但没有成功 以下是 Web 服务调用的代码 func GetAllBusiness Alamofire request GET http MyWebS
  • 如何将变量传递到bitbucket-pipelines中的credentials.json?

    我正在使用 bbrun 来模拟本地运行的管道 本质上 我需要的 不是问题 是在 GCP 上自动执行 terragrunt 基础设施部署 因此 每次使用标签推送时 它都会部署特定的环境 这是我的 bitbucket pipelines yml
  • Python 生成器和迭代器的区别

    迭代器和生成器有什么区别 一些关于何时使用每种情况的示例会很有帮助 iterator是一个更一般的概念 任何其类具有 next 方法 next在Python 2 和 iter 的方法return self 每个生成器都是一个迭代器 但反之则
  • “setInterval”内“for”的索引

    我有一个对象 我把它放在一个数组中 然后我用for对于数组中的每个对象 我设置了一个设置的间隔 用于使用参数调用对象的方法 但我不能 这是我的 班级 function ClassTest this test function word co
  • GWT 主题样式覆盖我的 css 样式

    我有一些带有自己的 css 的 html 文件 我想在 gwt 应用程序中使用它们 因此我复制了应用程序中的 html 和 css 文件 问题是当我打开 html 时它使用 gwt 主题样式 例如 在我的 css 中 html body 背
  • 确定程序集的框架 (CLR) 版本

    从命令行 或通过任何方式 我如何确定哪个CLR版本a NET组装需要 我需要确定程序集是否需要 2 0 或 4 0 CLR 版本 ildasm exe如果您双击 MANIFEST 并查找 元数据版本 将会显示它 默认情况下 它是编译映像所针
  • MySQL LIKE 与 json_extract

    我有一个 MySQL 查询 其中按 json 字段进行过滤 SELECT id username FROM SELECT id Json extract payload username AS username FROM table1 AS
  • 空手道:当在后台定义 json 时,动态场景大纲不起作用

    Feature Dynamic Scenario Outline Background def kittens name abc name def Scenario Outline cat name
  • 在 Java 中:如何从 byte[] 数组中压缩文件?

    我的应用程序通过 SMTP 服务器接收电子邮件 电子邮件中有一个或多个附件 电子邮件附件以 byte 形式返回 使用 sun javamail api 我试图即时压缩附件文件 而不先将它们写入磁盘 实现这一结果的可能方法是什么 您可以使用