我用这段代码将ResultSet写入文本文件。
FileWriter fstream = new FileWriter(new File("work/data/NewFile.txt"));
BufferedWriter out = new BufferedWriter(fstream);
while(rs1.next()){
String td_status=rs1.getString("td_status");
int count=rs1.getInt("count(1)");
System.out.println(td_status + "t" +count );
out.write(rs1.getString("td_status"));
out.write(rs1.getInt("count(1)"));
out.newLine();
}
out.close();
在文本文件中,它写为
成功?按范围免除 0.1-0.0001 规则 由小于 0.0001 规则豁免
但实际的结果集是
成功 153
按范围豁免 0.1-0.0001 规则 2
豁免小于0.0001 规则 3
请问你能帮我得到这个吗?
问题不在于 ResultSet,而在于 FileWriter 的使用。
您正在调用 FileWriter.write(int(,它继承自 OutputStreamWriter.write(int(。 此方法写出一个字符,而不是一个数字。 调用 out.write(153)
会将字符 153 写入输出。 它不写字符串"153"
,这就是我想你想要的。
写出字符的方法有一个int
参数似乎很奇怪。 我不知道原因 - 也许是为了与读取单个字符的 Reader.read()
方法对称,将其作为int
返回,但 -1 指定文件结束。 这与 System.out.println(int)
有些不一致,后者确实打印出一个整数,而且,正如您所发现的,也不直观。
替换行
out.write(rs1.getInt("count(1)"));
跟
out.write(Integer.toString(rs1.getInt("count(1)")));
并对传递int
参数的任何其他out.write
调用进行任何类似的更改。
编辑:如果要插入换行符,请插入一行,例如
out.write(System.getProperty("line.separator"));
或者,将 FileWriter 包装在 BufferedWriter 中,并使用 newLine(( 方法。