逐行写入文本文件

时间:2019-05-06 11:22:43

标签: java

我正在编写Java代码以从文本文件中读取a,使用读取的信息来计算总和和差,然后将结果写入文本文件。我的问题是我设法写入了文本文件,但结果却写成连续的一行。我想要的是一行一行地写结果。

我设法写入了文本文件,但结果却写成连续的一行。

try {
    FileWriter writer = new FileWriter("results.text", true);

    Float sumres = rid.Add(a,b);                            
    String sumr = Float.toString(sumres);
    writer.write(sumr);

    Float diffres = rid.Subtract(a,b);                          
    String diffr = Float.toString(sumres);
    writer.write(diffr);

    writer.close(); 
} catch(IOException ex){
    ex.printStackTrace();
}

输出以单行显示以下内容:

  

4.22.24579570.05037037-2.9881759-0.4110921-0.21129033-4.50.750.66666674.22.24579570.05037037-2.9881759-0.4110921-0.21129033-4.50.750.66666674.22.24579572.24579570.050370370.05037037-2.9881759-2.9881759-0.4110921-0.4110921-0.21129033-0.21129033-4.5 -4.50.750.750.66666670.66666674.24.2

我期望的是输出逐行显示为: 4.2 2.2457957 0.05037037 等等

OR至少使结果有分离的迹象

2 个答案:

答案 0 :(得分:4)

每次要终止行时,都可以使用以下命令:

writer.write(System.getProperty("line.separator"));

或者,假设您在编写diff后想要换行,您也可以这样做:

writer.write(diffr + System.getProperty("line.separator"));

答案 1 :(得分:1)

将FileWriter包裹在BufferedWriter中,这样就可以使用writer.newLine()方法:

try (BufferedWriter writer = new BufferedWriter(new FileWriter("results.text", true))){
  writer.write("");
  writer.newLine();
}
catch(IOException ex){
  ex.printStackTrace();
}

另一个好处是,与直接使用FileWriter相比,BufferedWriter效率更高。通常,建议将BufferedWriter包装在可能需要进行write()操作的昂贵Writer周围,例如FileWriters和OutputStreamWriters。

注意,在您的示例中,您没有正确管理writer资源,因为如果发生异常,它将不会关闭,因此应该在finally块中关闭。如果使用最新的Java版本,则可以使用如我的示例中所示的try-with-resources构造,这将自动关闭编写器,因此您不必自己编写finally块。