使用Java将字符串数组写入文件 – 单独的行

我正在编写一个程序,以String数组(从用户输入)的forms写入一组观察到文件。 我能够对.txt文件进行观察,然后在不删除以前数据的情况下添加新观察,但我的所有数据都在同一行。 我需要将每组观察结果分开。 此外,我需要以后能够访问该文件并从中读取。

我的代码目前看起来像这样:(观察是字符串数组)

for(int i = 0; i < observation.length; i++) { try (BufferedWriter bw = new BufferedWriter(new FileWriter("birdobservations.txt", true))) { String s; s = observation[i]; bw.write(s); bw.flush(); } catch(IOException ex) {} } 

我的输出目前看起来像这样: CrowMOsloMay2015JayMOsloJune2012CrowMOsloMay2015RobinFBergenMay2012

我希望它看起来像这样:

 Crow M Oslo May2015 Jay M Oslo June2012 

…等等

我该怎么做呢? 我假设我需要某种循环,但我现在已经停留了一段时间。

为什么不在try{}块中迭代并在每次写入后使用BufferedWriter.newLine() ?

如果您需要稍后再读取值,则需要考虑一些明确的输出格式。 也许最简单的解决方案是CSV格式(我注意到你的输出数据有空格 – 在这种情况下你需要使用空格以外的东西来分隔你的条目)

您需要将行分隔符推入缓冲区。

 newLine(); 

这是代码

 for(int i = 0; i < observation.length; i++) { try (BufferedWriter bw = new BufferedWriter(new FileWriter("birdobservations.txt", true))) { String s; s = observation[i]; bw.write(s); bw.newLine(); bw.flush(); } catch(IOException ex) { ex.printStackTrace(); } } 
 bw.write(s); bw.write(System.getProperty("line.separator")); bw.flush(); 
  bw.write(s); bw.newLine(); bw.flush(); 

抱歉,由于我的声誉,我不能评论Brian Agnew的答案,所以我在这里写。

似乎您的数组项中没有任何空格,因此您可以成功地将它们用作.txt文件中的分隔符。 阅读时,只需逐行读取文件,然后按分割(“”)方法分隔项目。