はCSV

2016-12-12 3 views
-1

に複数行を書く私の値オブジェクトは、複数の行が言いました:はCSV

abc 
xyz 
pqr 
mno 

私はこれらの行が大文字に変換し、同時にCSVファイルに書き込みたいです。私の下のコードは最後のエントリ、つまり "mno"をo/pファイルに書き込むだけです。それは既存のものを上書きしているからです。それは、既存のものの上に上書きされているので

ABC 
XYZ 
PQR 
MNO 
+1

[Java:FileWriter:新しい行を作成]の複製の可能性あり(http://stackoverflow.com/questions/18549704/java-filewriter-create-a-newline) – OldProgrammer

+0

実際の値の種類'?おそらく実際にはObjectではありませんが、Objectから派生したものと思われます。 – jarmod

+0

jarmodの質問に似て、私はあなたが4行をどこに渡しているのか分かりません。各行に対して 'transformFieldValue'を何度も呼びますか? | '新しいFileWriter(file、true)'を使ってみます。 javadocでは、 'true'パラメータを渡すと、データは最初ではなくファイルの最後に書き込まれます。 – snowmanjack

答えて

0

: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; 
} 

はい、ただしファイルを上書きしています。

  1. があなたのFile fileとあなたのクラスのあなたのFileWriter frメンバー(すなわちグローバル変換:私の推測では、あなたがtransformFieldValueを呼び出すループ、あなたはその方法を入力するたびに、新しいファイルと新しいFileWritterを作成しているを持っています変数)。

  2. 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

0

を投稿してくださいあなたの質問への答えは多分ある::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全体を置くことを提案します。

+0

ABCXYZPQRMNOとして出力しました – earl