File outFile = new File("D:\\output.txt");
BufferedWriter wb = new BufferedWriter(new FileWriter(outFile));
while (resultSet.next()) {
int attr_id = resultSet.getInt("int_id");
String stringValue = resultSet.getString("StringValue");
String name = resultSet.getString("Name");
int index = stringValue.indexOf(".");
int valueLength = stringValue.length();
if(isNumeric(stringValue)) {
//if(index != -2 ) {
if(index != (valueLength - 2)) {
String string1 = Double.valueOf(stringValue).toString();
System.out.println("converted values : " +string1);
System.out.println("stringValue : " +stringValue);
System.out.println("intValue : " +int_id);
wb.write( stringValue + "," + int_id + "," + string1 );
wb.newLine();
}
}
}
上面是我的代码部分,从结果集我将数据写入文件。但是代码不是在output.txt文件中打印值,但我可以在控制台中看到结果
如果我删除注释行并注释if(index != (valueLength - 2)) {
这一行,java代码正在创建带有值的output.txt。
怎么了?
答案 0 :(得分:1)
完成后,可能需要在BufferedWriter上调用flush和/或close。
答案 1 :(得分:0)
您的代码未写入文件的原因是您从未将数据从Writer推送到实际文件。
将BufferedWriters视为您要发送给同事的电子邮件。当你使用:
wb.write( stringValue + "," + int_id + "," + string1 );
就像您正在向同事输入电子邮件,并向他们定义消息。但是,由于您没有按"发送电子邮件",您的同事将永远不会看到该消息。这里可以应用相同的概念。
您正在使用大量数据填充编写器,但您永远不会将数据发送到您尝试写入的文件。有两种方法可以做到这一点,第一种方式是" flush"作者(见文档HERE)。你可以通过调用
来做到这一点 wb.flush();
这相当于按下"发送电子邮件",并将数据写入您正在编辑的文件。第二种方法是"关闭"作者(见文件HERE)。这样做的原因是因为BufferedWriter的close方法在关闭流之前首先刷新流。这可以通过调用
来完成 wb.close();
尽管如此,在完全编辑文件之前这样做是不明智的,因为无法再访问它。
以下是您编写的代码,用于在您编写的每条记录之后刷新流,然后在处理完所有记录后关闭流。注意wb.flush()和wb.close()的位置。
File outFile = new File("D:\\output.txt");
BufferedWriter wb = new BufferedWriter(new FileWriter(outFile));
while (resultSet.next()) {
int attr_id = resultSet.getInt("int_id");
String stringValue = resultSet.getString("StringValue");
String name = resultSet.getString("Name");
int index = stringValue.indexOf(".");
int valueLength = stringValue.length();
if(isNumeric(stringValue)) {
//if(index != -2 ) {
if(index != (valueLength - 2)) {
String string1 = Double.valueOf(stringValue).toString();
System.out.println("converted values : " +string1);
System.out.println("stringValue : " +stringValue);
System.out.println("intValue : " +int_id);
wb.write( stringValue + "," + int_id + "," + string1 );
wb.newLine();
wb.flush();
}
}
}
wb.close();