我正在编写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至少使结果有分离的迹象
答案 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块。