Как преобразовать файл csv в ByteArrayResource - PullRequest
0 голосов
/ 16 июня 2020

Я работаю над экспортом данных. Пользователь может выбрать формат файла между «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[]*/);
}

1 Ответ

2 голосов
/ 16 июня 2020

Не используйте ничего , которое начинается с File. Используйте ByteArrayOutputStream и OutputStreamWriter вокруг этого:

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