に複数行を書く私の値オブジェクトは、複数の行が言いました:はCSV
abc
xyz
pqr
mno
私はこれらの行が大文字に変換し、同時にCSVファイルに書き込みたいです。私の下のコードは最後のエントリ、つまり "mno"をo/pファイルに書き込むだけです。それは既存のものを上書きしているからです。それは、既存のものの上に上書きされているので
ABC
XYZ
PQR
MNO
に複数行を書く私の値オブジェクトは、複数の行が言いました:はCSV
abc
xyz
pqr
mno
私はこれらの行が大文字に変換し、同時にCSVファイルに書き込みたいです。私の下のコードは最後のエントリ、つまり "mno"をo/pファイルに書き込むだけです。それは既存のものを上書きしているからです。それは、既存のものの上に上書きされているので
ABC
XYZ
PQR
MNO
:andy.csvは次のように読むように結果を達成するためにどのように
private Object transformFieldValue(Object value) throws IOException { String upperCase = value.toString().toUpperCase(); File file = new File("andy.csv"); FileWriter fr=null; try { fr = new FileWriter(file); fr.write(upperCase); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { fr.flush(); fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return upperCase; }
。
はい、ただしファイルを上書きしています。
があなたのFile file
とあなたのクラスのあなたのFileWriter fr
メンバー(すなわちグローバル変換:私の推測では、あなたがtransformFieldValue
を呼び出すループ、あなたはその方法を入力するたびに、新しいファイルと新しいFileWritter
を作成しているを持っています変数)。
3つのメソッドを作成します。createNewFile()
,writeToFile()
,closeFile()
a。 createNewFile()
には、以下が含まれている必要があります。
File file = new File("andy.csv");
FileWriter fr=null;
try {
fr = new FileWriter(file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
b。 writeToFile()
は、以下を含みます:
String upperCase = value.toString().toUpperCase();
fr.write(upperCase);
c。
を必要な場所try-catch-finally
ブロックを追加
fr.flush();
fr.close();
をしかし、あなたはより多くの、より良い支援をしたい場合は、適切なMinimal, Complete, and Verifiable example
を投稿してくださいあなたの質問への答えは多分ある::closeFile()
が含まれている必要があります
変更
fr = new FileWriter(file);
fr = new FileWriter(file, true);
に「真」のファイルの末尾にバイトを追加できるようになります。
改行を作成することを忘れないでください。これは、異なるオペレーティングシステムで異なる場合があります。
fw.write("\r\n");
... Windowsの改行の場合。
しかし:
あなたはそれが「大文字にこれらの行を変換し、同時にCSVファイルに書き込む」ことが明らかにシングル責任原則の違反であるべきだと述べたように。私は、 "Stack Exchange Code Review"の上にThe Trial on the Code全体を置くことを提案します。
ABCXYZPQRMNOとして出力しました – earl
[Java:FileWriter:新しい行を作成]の複製の可能性あり(http://stackoverflow.com/questions/18549704/java-filewriter-create-a-newline) – OldProgrammer
実際の値の種類'?おそらく実際にはObjectではありませんが、Objectから派生したものと思われます。 – jarmod
jarmodの質問に似て、私はあなたが4行をどこに渡しているのか分かりません。各行に対して 'transformFieldValue'を何度も呼びますか? | '新しいFileWriter(file、true)'を使ってみます。 javadocでは、 'true'パラメータを渡すと、データは最初ではなくファイルの最後に書き込まれます。 – snowmanjack