フォーム入力を解析し、それらから .csv ファイルを作成するサーブレットを構築しようとしていますが、bufferedWriter オブジェクトは (私には明らかな) 理由もなく多くの文字を切り捨てます。
String filepath = getServletContext().getRealPath("\\") + "temp";
String filename = "csv"+dateFormat.format(date)+".csv";
File file = new File(filepath + filename);
file.createNewFile();
BufferedWriter fwrite = new BufferedWriter(new FileWriter(file));
for(int i=0; i<list.size(); i++) {
String[] dataEntry = list.get(i);
for (int j=0; j<dataEntry.length;j++)
fwrite.write("test1-2");
//fwrite.append(dataEntry[j]+";");
fwrite.newLine();
}
fwrite.close();
URI fileUri = file.toURI();
stream = response.getOutputStream();
response.setContentType("text/csv");
response.addHeader("Content-Disposition", "attachment; filename="
+ filename);
URLConnection urlConn = fileUri.toURL().openConnection();
response.setContentLength((int) urlConn.getContentLength());
buf = new BufferedInputStream(urlConn.getInputStream());
while (buf.read() != -1)
stream.write(buf.read());
} finally {
if (stream != null)
stream.close();
if (buf != null)
buf.close();
}
}
コードが少しばかげている場合は申し訳ありません。各エントリの「test1-2」文字列を書き込むときの私の現在の出力は
et-ts12et-ts12et-ts12ÿ
コード自体に関するその他のコメントをいただければ幸いです。ネットで見つけたものを試しているだけです。実際のベスト プラクティスの参照ポイントはありません。