繁体   English   中英

逐行写入文本文件

[英]Writing to a text file line by line

我正在编写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 等等

或者至少让结果显示分离

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

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

或者,假设您在编写差异后想要一个新行,您也可以这样做:

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

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

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

另一个好处是 BufferedWriter 比直接使用 FileWriter 更有效率。 通常,建议将 BufferedWriter 包裹在任何 write() 操作可能开销较大的 Writer 周围,例如 FileWriters 和 OutputStreamWriters。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM