java - 如何使用java高效下载大型csv文件

标签 java large-files

我需要提供一项功能,让用户可以在我的 Web 应用程序中下载 excel/csv 格式的报告。一旦我在网络应用程序中创建了一个模块,它会创建 Excel,然后读取它并发送到浏览器。它工作正常。这次我不想生成 Excel 文件,因为我对文件系统没有那种级别的控制权。我想一种方法是在 StringBuffer 中生成适当的代码并设置正确的内容类型(我不确定这种方法)。其他团队也有这个功能,但是当数据非常大时他们会很挣扎。考虑到数据大小可能非常巨大,提供此功能的最佳方式是什么。是否可以在客户端不注意的情况下以 block 的形式发送数据(下载延迟除外)。 我忘记补充的一个问题是,当数据非常大时,它也会在服务器端产生问题(CPU 利用率和内存消耗)。我是否有可能读取固定数量的记录,例如 500 条,将其发送给客户端,然后再读取 500 条,直到完成。

最佳答案

您还可以生成 HTML 而不是 CSV,并且仍将内容类型设置为 Excel。这对于着色和样式文本很有用。

当客户端接受压缩时,您还可以使用 gzip 压缩。通常有标准的方法,例如 servlet 过滤器。

绝不是 StringBuffer 或更好的 StringBuilder。最好把它流出来。如果您不(无法)调用 setContentength,输出将分块(没有预测进度)。

关于java - 如何使用java高效下载大型csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10181675/

相关文章:

file-upload - 使用自托管 Nancy 上传大文件示例

python - 合并多个csv文件与python中不同列的错误与writerow

php - 使用 jQuery 文件上传将超过 1GB 的大文件上传到 2GB - blueimp(基于 Ajax)php/yii 它在 Firefox 浏览器中显示错误

java - 面对事务时使用 "last modified"时间戳同步 Oracle 数据库

java - 声明输出参数并像查询结果、T-SQL、JAVA 一样选择它

java - indexOf() 方法在 ArrayList 中找不到我的字符串

java - Wicket 口 ModalWindow 错误

android - [Android SDK]无法从资源中复制外部数据库(13MB)

java - 有没有办法知道在 JSF 项目的 xhtml 文件中引用了哪些 bean 属性?

php - 使用 cURL 下载大型 XML 文件