Firebaseから取得した複数行のデータをファイルに書き込もうとしましたが、失敗しました。 this exampleを使用してPrintWriterを作成した後、ループを使用してFirebaseデータベース内の複数の子から値を収集しました。ファイル名の拡張子は.csvです。 LOG文からFirebaseベースのJavaでCSVファイルに複数の行を書き込む
public PrintWriter pw;
...
File file = new File(this.getFilesDir(), filename);
pw = new PrintWriter(new BufferedWriter(new FileWriter(file, true)));
String columns = <COLUMNS>;
pw.write(columns);
patientRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
for (DataSnapshot postSnapshot: snapshot.getChildren()) {
Object object = postSnapshot.getValue(Object.class);
String value1 = object.getValue1();
...
String row = value1 + ", " + value2 + ", "...;
pw.println(row);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
pw.close();
、私はonDataChanged()
の値から作成した文字列が正しいことを確認することができます。私の唯一の問題は、ループからファイルに書き込まれないことです。 CSVファイルがアップロードされると、ファイル内の唯一のテキストは列とその下の空白スペースです。
なぜ行が追加されないのですか?
私はとても腹立たしいので、私はこれを完全に逃しました。トンネルのビジョン私は推測する。本当にありがとう!もし私ができるなら、私は百万回upvoteしたいと思います。 – wasimsandhu
@Taras:あなたの説明は正しいですが、答えのコードはリスナーを取り付けた後でもライターを閉じます。 'pw.close()' *を* onDataChange()に移動することを意味しましたか? –
@FrankvanPuffelen私はちょうどエラーを含む著者のコードの唯一の部分を取って、何が間違っているのかを説明しました –