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

...等

どうすればいいですか?ある種のループが必要だと思いますが、しばらくの間、これを理解することに行き詰まっています。

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

申し訳ありませんが、私の評判のためにBrian Agnewの回答にコメントすることはできません。そのため、ここに書き込みます。

配列項目にスペースがないように見えるので、.txt ファイルの区切り記号としてそれらを正常に使用できます。読み取るときは、ファイルを 1 行ずつ読み取り、split(" ")メソッドで項目を分けるだけです。

于 2013-09-18T12:16:57.520 に答える
0
 bw.write(s);
bw.newLine();
bw.flush();
于 2013-09-18T11:50:01.067 に答える
0
bw.write(s);
bw.write(System.getProperty("line.separator"));
bw.flush();
于 2013-09-18T11:46:54.930 に答える