java - 如何将 csv 文件转换为 ByteArrayResource
问题描述
我正在处理数据导出。用户可以在“xls”和“csv”之间选择文件格式。spring 控制器中的导出方法,根据规范,必须返回一个 ByteArrayResource。在服务类中,将 xls 文件转换为 ByteArrayResource 没有问题,但 csv 文件不一样。
//INSIDE SERVICE BUSINESS LOGIC
public ByteArrayResource generateCsvFile(){
FileWriter csvWriter = new FileWriter("myFileName.csv");
//here some logic to build my csv file
/* I AM NOT ABLE TO CONVERT THE FileWriter IN byte[] IN ORDER TO RETURN IT TO THE CONTROLLER
I ALSO TRIED TO CONVERT IT TO FileOutputStream OR ANYTHING THAT CAN USE SOMETHING LIKE
.getByte() or toByte() BUT I'M NOT FINDING OUT ANY SOLUTIONS */
return new ByteArrayResource(/*file converted in byte[]*/);
}
解决方案
不要使用任何以File
. 使用ByteArrayOutputStream
和OutputStreamWriter
周围:
ByteArrayOutputStream out = new ByteArrayOutputStream();
try (Writer writer = new OutputStreamWriter(out)) {
// write to writer
}
return new ByteArrayResource(out.toByteArray());
推荐阅读
- c# - 返回接口的通用方法
- c# - 如何从 PowerShell CmdLet 中获取登录用户名
- android - 当键盘显示时,带有 EditText 的 Android ListView 失去焦点。键盘随机出现
- mysql - 如何从 excel 中获取数据并将 excel 值作为参数传递给 pentaho etl 作业的 SQL 查询
- python - 按钮调整 tkinter Python 3.8
- docker - 'docker image ls' 提供了巨大的
图像列表 - r - 如何在保留第一行和最后一行的同时选择每隔 x 行
- python - 'DataFrameGroupBy' 对象的 pandas 'to_csv' 问题)
- java - java - 如何在输入的二维数组java中找到奇数的数量和所有奇数的总和?
- excel - excel 到 16 位数字的 csv