У меня есть простой класс сервлета, который возвращает CSV-файл клиенту (браузеру). Когда я попытался написать строку в поток. Первоначально я следовал примеру A), однако я заметил, что подмножество ожидаемых данных добавляется.запись строки в выходной поток в java
Предположим, я ожидаю, что в CSV-файле будут записаны точные 100 записей. Каждая запись представляет собой «имя/фамилия/возраст». В примере A) я получил 120. Первые 100 записей правильные, но подмножество из 100 в этом случае добавлено 20 (дубликатов).
пример А)
public void returnCSV(HttpServletResponse resp, String data) {
ServletOutputStream out = resp.getOutputStream();
InputStream in = new ByteArrayInputStream(data.getBytes("UTF-8"));
byte[] bytes = new byte[4096];
while (in.read(bytes,0,4096) != -1) {
out.write(bytes,0,4096);
}
in.close();
out.flush();
out.close();
}
После прочтения больше потоков относительно преобразования строки в поток. Я решил следовать примеру B), который произвел корректный вывод 100 записей. Но я не понимаю, почему первый пример А) добавил бы дубликаты данных.
пример B)
public void returnCSV(HttpServletResponse resp, String data) {
ServletOutputStream out = resp.getOutputStream();
out.write(data.getBytes("UTF-8"));
out.flush();
out.close();
}
Благодарим вас за разъяснения и советы. – DaeYoung
resp.setCharacterEncoding ("UTF-8"); . Resp.getWriter() записи (данные); отлично работает! Благодаря! – DaeYoung