有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java将jdbc结果集设置为文本文件

我用这段代码将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

根据lessthan 0.0001规则3豁免

你能帮我弄到这个吗


共 (1) 个答案

  1. # 1 楼答案

    问题不在于结果集,而在于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()方法