0

我正在编写一个程序,它以字符串数组(来自用户输入)的形式将观察集写入文件。我可以将观察结果写入 .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

...ETC

我该怎么做呢?我想我需要某种循环,但我已经坚持了一段时间了。

4

5 回答 5

8

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

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

于 2013-09-18T11:46:03.347 回答
3

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

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();
  }
} 
于 2013-09-18T11:51:36.207 回答
0
bw.write(s);
bw.write(System.getProperty("line.separator"));
bw.flush();
于 2013-09-18T11:46:54.930 回答
0
 bw.write(s);
bw.newLine();
bw.flush();
于 2013-09-18T11:50:01.067 回答
0

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

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

于 2013-09-18T12:16:57.520 回答