【发布时间】:2015-11-29 19:53:42
【问题描述】:
我有一个简单的 servlet 类将 CSV 文件返回给客户端(浏览器)。当我尝试将字符串写入流时。最初我遵循示例 A)但是我注意到附加了预期数据的子集。
假设我希望在 csv 文件中准确捕获 100 条记录。每条记录代表“名字/姓氏/年龄”。在示例 A)中,我得到了 120。前 100 条记录是正确的,但在这种情况下,100 条记录的子集附加了 20 条(重复)。
示例 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();
}
【问题讨论】: