首页 > 解决方案 > 如何将 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[]*/);
}

标签: javabytefileoutputstream

解决方案


不要使用任何File. 使用ByteArrayOutputStreamOutputStreamWriter周围:

ByteArrayOutputStream out = new ByteArrayOutputStream();
try (Writer writer = new OutputStreamWriter(out)) {
  // write to writer
}
return new ByteArrayResource(out.toByteArray());

推荐阅读