我有一个简单的servlet类将CSV文件返回给客户端(浏览器)。当我试图写入字符串流。最初我遵循例子A),但我注意到预期数据的子集被追加。在java中将输出流写入字符串
比方说,我预计精确的100个记录将被捕获在一个csv文件中。每个记录代表“名/姓/年龄”。在例子A)中,我得到了120个。前100个记录是正确的,但是在这个例子中是20个(重复)的100个子集被追加。
例A)
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条记录。但我不明白为什么第一个例子A)会添加重复的数据。
例如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