Возможно ли получить содержимое BufferedWriter
как String
?
Нет, это невозможно сделать.
BufferedWriter
содержит только «один буфер заполнен» записанных данных.Этого недостаточно для того, что вам нужно.Остальные данные будут записаны в файл и больше не будут доступны в памяти.(И, кроме того, буфер писателя намеренно скрыт за слоем абстракции, поэтому вы не можете получить его ... без "мерзкого" отражения.)
Теперь вы можете добавить дополнительный компонент или компонентыв стек вывода, чтобы захватить вывод в памяти.Например, вы можете использовать класс Apache TeeOutputStream
( javadoc ), чтобы разделить данные и записать 2-ю копию в ByteArrayOutputStream
.Или вы можете записать 2-ю копию непосредственно в выходной поток S3.
Другой способ сделать это - «погрузить» данные, которые вы хотите записать в ByteArrayOutputStream
, извлечь массив байтов и записать его один раз.в файл и во второй раз в поток в корзину S3.
Если размер файла может быть большим, может быть лучше избегать всего, что влечет за собой хранение всего содержимого файла в памяти.