即时创建 zip,其中包含 csv 文件

2023-11-25

我正在尝试动态创建一个 zip 文件,其中包含一堆要从 servlet 返回的 csv 文件,这非常令人困惑。一点指导会很棒。以下是我需要以某种方式协同工作的代码块:

// output stream coming from httpResponse, thats all fine
ZipOutputStream zip = new ZipOutputStream(outputStream);


// using the openCSV library to create the csv file
CSVWriter writer = new CSVWriter(Writer?); 
// what writer do I use? I want to write to memory, not a file

writer.writeNext(entries); 
writer.close();

// at this point should I have the csv file in memory somewhere? 
//and then try to copy it into the zip file?

int length;
byte[] buffer = new byte[1024 * 32];    
zip.putNextEntry(new ZipEntry(getClass() + ".csv"));

// the 'in' doesn't exist yet - where am I getting the input stream from?
while((length = in.read(buffer)) != -1)
    zip.write(buffer, 0, length);

zip.closeEntry();
zip.flush();

您可以按如下方式流式传输包含 CSV 的 ZIP 文件:

try {
    OutputStream servletOutputStream = httpServletResponse.getOutputStream(); // retrieve OutputStream from HttpServletResponse
    ZipOutputStream zos = new ZipOutputStream(servletOutputStream); // create a ZipOutputStream from servletOutputStream

    List<String[]> csvFileContents  = getContentToZIP(); // get the list of csv contents. I am assuming the CSV content is generated programmatically
    int count = 0;
    for (String[] entries : csvFileContents) {
        String filename = "file-" + ++count  + ".csv";
        ZipEntry entry = new ZipEntry(filename); // create a zip entry and add it to ZipOutputStream
        zos.putNextEntry(entry);

        CSVWriter writer = new CSVWriter(new OutputStreamWriter(zos));  // There is no need for staging the CSV on filesystem or reading bytes into memory. Directly write bytes to the output stream.
        writer.writeNext(entries);  // write the contents
        writer.flush(); // flush the writer. Very important!
        zos.closeEntry(); // close the entry. Note : we are not closing the zos just yet as we need to add more files to our ZIP
    }

    zos.close(); // finally closing the ZipOutputStream to mark completion of ZIP file
} catch (Exception e) {
    log.error(e); // handle error
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即时创建 zip,其中包含 csv 文件 的相关文章

  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 路径中 File.separator 和斜杠之间的区别

    使用有什么区别File separator和一个正常的 在 Java 路径字符串中 与双反斜杠相反 平台独立性似乎不是原因 因为两个版本都可以在 Windows 和 Unix 下运行 public class SlashTest Test
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • 有没有办法为Java的字符集名称添加别名

    我收到一个异常 埋藏在第 3 方库中 消息如下 java io UnsupportedEncodingException BIG 5 我认为发生这种情况是因为 Java 没有定义这个名称java nio charset Charset Ch
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • 按日期对 RecyclerView 进行排序

    我正在尝试按日期对 RecyclerView 进行排序 但我尝试了太多的事情 我不知道现在该尝试什么 问题就出在这条线上适配器 notifyDataSetChanged 因为如果我不放 不会显示错误 但也不会更新 recyclerview
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • 将表单中的标签与输入旁边对齐

    我有非常基本且已知的表单场景 我需要正确对齐输入旁边的标签 但是我不知道该怎么做 我的目标是标签与右侧的输入旁边对齐 这是所需结果的图片示例 为了您的方便并澄清我现在所拥有的内容 我做了一个小提琴 http jsfiddle net WX5
  • Dispatcher.Invoke 之后应用程序冻结

    我的这个应用程序在调用任何控件的dispatcher invoke 时都会冻结 当我在单选按钮 网格 图像等中调用调度程序时 应用程序冻结但没有给出错误 请帮忙 谢谢 我调用线程 Method RunClient private void
  • Knockout 和 jQuery Mobile:将数据绑定到选择列表

    我在同一个项目中同时使用 Knockout 版本 2 0 和 jQuery Mobile 版本 1 0 1 问题在于将数据绑定到选择列表 jQuery Mobile 以看似选定的值和实际列表是单独元素的方式呈现选择列表 这是通过执行来修复的
  • 什么是索引单子?

    What is 索引单子这个单子的动机是什么 我读到它有助于跟踪副作用 但类型签名和文档并没有引导我到任何地方 有什么例子可以说明它如何帮助跟踪副作用 或任何其他有效的例子 一如既往 人们使用的术语并不完全一致 有各种受单子启发但严格来说并
  • Python 用函数的输出替换字符串模式

    我有一个Python字符串 比如说The quick red fox jumps over the lame brown dog 我正在尝试替换以 以及以单词作为参数的函数的输出 def my replace match return ma
  • 从另一个java类调用静态方法

    我最近从 PHP 工作转向 Java 工作并有一个查询 想要强调一下我是Java的初学者 本质上 我正在文件 A 具有 A 类 中工作 并且想要引用文件 B B 类 中保存的静态方法 使用 A 类时是否需要引用文件 B 我正在沿着PHP中的
  • 如何在 Windows 上取消 select() 中的等待

    在我的程序中 有一个线程 接收线程 负责从 TCP 套接字接收请求 并且有许多线程 工作线程 负责处理接收到的请求 处理请求后 我需要通过 TCP 发送答案 这是一个问题 我想在用于接收数据的同一个线程中发送 TCP 数据 该线程接收数据后
  • Windows 容器无法访问互联网,但 Linux 容器可以访问互联网 - VPN 客户端在主机上处于活动状态

    我的主机上安装了 Stonesoft VPN Client 和 Docker for Windows 我的 Windows 容器似乎无法解析任何主机 甚至是 www google com 然而我的 Linux 容器工作得很好 当我禁用网络适
  • 如何在 r 中为 ggplot 自定义调色板?

    我使用此代码绘制北美温度变化地图 ggplot maps aes y Latitude x Longitude z variable ggtitle title scale fill brewer palette Spectral geom
  • Java运行时环境与.NET框架在编译过程方面如何比较?

    我正在通过以下方式学习源代码到机器代码的转换 NET and JRE构架 首先 我做了一些研究 比较了这两个过程并创建了这个图 我需要一些帮助来批评它的正确性 更重要的是添加我错过的任何严重的事情 以更好地理解编译路径 NET 和 Java
  • Scapy 中的 HTTP GET 数据包嗅探器

    我正在尝试在 Scapy 中编写一个简单的嗅探器 它仅使用 GET 方法打印 HTTP 数据包 这是代码 usr bin python from scapy all import def http header packet http pa
  • 你可以使用 PL/Perl 中的库吗

    我只是好奇在编写 PL Perl 函数时是否可以有一个use My Lib 声明 或启用编译指示和功能 例如 use strict use feature switch 使用 PL Perl 时则不然 它限制了 require 和 use
  • 我应该使用 ImageMagick 的 PHP 扩展还是仅使用 PHP 的 Exec() 函数来运行终端命令?

    我需要对我网站上的用户上传的图像进行以下图像处理 调整图像大小 如果大于特定尺寸 将所有图像格式转换为 jpg 在所有图像的底部添加水印 我是否需要使用 MagickWand 或 iMagick 扩展 或者我可以直接在 PHP 的 exec
  • 为什么knitr无法找到framed.sty或kpsewhich?

    knit test2 rnw processing file test2 rnw gt gt gt gt gt gt gt gt gt gt gt gt gt 20 gt gt gt gt gt gt gt gt gt gt gt gt g
  • 在 Ruby 中将哈希数组转换为 ONE 哈希

    我有一个哈希数组 其数组看起来像这样 result id t gt 1 transcript t gt I am a transcript ONE id t gt 2 transcript t gt I am a transcript TW
  • OpenGL GLSL 采样器是否始终返回从 0.0 到 1.0 的浮点数?

    我创建了几个浮点 RGBA 纹理 glBindTexture GL TEXTURE 2D texid k glTexParameteri GL TEXTURE 2D GL TEXTURE MAG FILTER GL NEAREST glTe
  • Jquery - 加载动态内容时悬停效果不起作用 - 带有主题标签的 URI

    我目前正在一个网站上从事前端工作 我正在使用 jquery 来创建动态内容 我的问题是 当我输入我的 URI localhost jquery myfile 并且加载 index php 时 我的 jquery 脚本可以工作 但是当我单击导
  • 如何模拟对 url 的访问?

    我有一个用户提交订单的页面 在他们提交订单后 我想点击一个网址 http externalsite com id 12345 sessionid abc123 而不实际将它们重定向到外部页面 有没有办法做到这一点 当然 使用HttpWebR
  • 如何在 Windows 上安装 RedCloth?

    跑步时gem install RedCloth 在 Windows XP 上 我得到 Fetching RedCloth 4 2 8 gem 100 Temporarily enhancing PATH to include DevKit
  • 即时创建 zip,其中包含 csv 文件

    我正在尝试动态创建一个 zip 文件 其中包含一堆要从 servlet 返回的 csv 文件 这非常令人困惑 一点指导会很棒 以下是我需要以某种方式协同工作的代码块 output stream coming from httpRespons