Я работаю над приложением весенней загрузки, которому нужно отправить рабочую книгу, созданную документом рабочей книги apache poi, клиенту через API REST, хотя я могу отправить ее, я хотел бы знать эффективный способ отправки файла черезwire.
Я записал файл на диск и отправил файл клиенту, и API готов, но теперь мне нужно иметь дополнительный код для удаления таких устаревших файлов, поэтому я решил пойтисо вторым подходом
Записать файл в ByteArrayOutputStream, а затем передать байтовый массив для создания ресурса Spring, и он отправит файл без записи на диск, и проблема будет решена.
но потом я нашел много ссылок, которые обсуждают вопросы эффективности и памяти ByteArrayOutputStream, как эта ->. переполнение стека
Как объясняет один из ответов, BufferedReader более эффективен, чем ByteArrayOutputStream, для эффективной записи файлов, поэтому я пришел к следующему коду:
ByteArrayOutputStream byteOut= new ByteArrayOutputStream();
BufferedOutputStream bufOut = new BufferedOutputStream(bos);
String content = "lets imagin huge amount of data";
bufOut.write(content.getBytes());
bufOut.flush();
bufOut.close();
bos.close();
System.out.println(new String(byteOut.toByteArray()));
IЯ могу писать на ByteArrayOutputStream напрямую без BufferedOutputStream, но я думаю об эффективности записи буферизованных данных вместо побайтных.
Правильно ли использовать приведенный выше код в данной ситуации?