我正在编写一个程序,以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
...等
我该怎么做?我假设我需要某种循环,但我现在已经停留了一段时间。
答案 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(" ")方法分隔项目。