Java CSV写入失败,但数据存在



我正试图将查询的输出写入CSV文件。我向一个包含三个公司(CompanyA、CompanyB、CompanyC)的表发出三个查询,并将每个查询的结果输出到一个csv文件(A.csv、B.csv、C.csv)。

查询是有效的,System.out.println(下面)产生正确的名称。

但是,当我检查输出文件时,只填充CompanyC。公司a和B是空白的。我认为它只是处理最后一个查询,所以我从查询中删除了C,仍然A.csv和B.csv是空白的。这些名称之间没有格式差异,也没有null或任何可能导致输出错误的内容。我只是不明白为什么其中一个总是有效?只是重申一下:查询是有效的,控制台输出是正确的,我试图写入这些文件:

while (rsGroups.next()) {
String groupcode = rsGroups.getString("GroupCode");
String groupname = rsGroups.getString("groupname");
String sqlGetComms = "Select companyname from companies where groupcode ='" + groupcode + "'";
System.out.println(sqlGetComms);
ResultSet rs2 = st.executeQuery(sqlGetComms);
FileWriter fstream = new FileWriter("C:\temp\" + groupname + "comms.csv");
BufferedWriter out = new BufferedWriter(fstream);

while (rs2.next()) { 
out.write(rs2.getString("CompanyName") );
System.out.println(rs2.getString("companyname"));
out.newLine();
}
rs2.close();

fstream.close();
// fstream.flush();
}
System.out.println("done");

您需要out.close();而不是fstream.close();。这将写入、刷新BufferedWriter的缓冲区,并关闭fstream。

使用try-with-resources语法而不是关闭自己是一个好主意。少乱。

也使用Files实用程序类。例如,File Writer是一个旧的方便类,它使用默认的操作系统编码。您可能更喜欢使用UTF-8的完整Unicode。

相关内容

  • 没有找到相关文章

最新更新