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

时间:2013-09-18 11:44:06

标签: java arrays string file-io

我正在编写一个程序,以String数组(从用户输入)的形式将一组观察结果写入文件。我能够对.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

...等

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

5 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

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

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();
  }
} 

答案 2 :(得分:0)

bw.write(s);
bw.write(System.getProperty("line.separator"));
bw.flush();

答案 3 :(得分:0)

 bw.write(s);
bw.newLine();
bw.flush();

答案 4 :(得分:0)

抱歉,由于我的声誉,我无法评论Brian Agnew的答案,所以我在这里写下来。

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