2017-08-10 11 views
1

プロジェクトでは、UTF-8エンコーディングを使用してテキストファイルに追加する必要があります。 は、私の研究の間、私は2つの可能性を発見した:utf8でファイルに追加する

BufferedWriter out = new BufferedWriter(
    new OutputStreamWriter(new FileOutputStream("file.txt), "UTF-8") 
) 

これは、UTF-8で私のファイルに書き込まれますが、それはそれを上書きするのではなく、それがすでに存在する場合、それに追加します。

は、それから私はFileWriterでパラメータを使用して既存のファイルにapendするコードを発見したが、これは明示的にUTF-8を使用することはありません、というよりも、デフォルトのシステムの文字セットを使用します。私は今

BufferedWriter out = new BufferedWriter(new FileWriter("myfile.txt", true)) 

をエンコーディングとファイルへの追加の両方を定義する可能性が必要です。システムのエンコーディングに依存するだけで、これはオプションではありません。

どのような考えですか?

+0

この回答を参照してください。https://stackoverflow.com/questions/30307382/how-to-append-text-toを-file-in-java-8-using-specified-charset – diginoise

答えて

3

あなたはFileOutputStreamコンストラクタにtrue PARAMTERを追加するのを忘れ:

BufferedWriter out = new BufferedWriter(
    new OutputStreamWriter(
     new FileOutputStream("file.txt", true), // true to append 
     StandardCharsets.UTF_8     // Set encoding 
    ) 
); 
+0

duh!どうやら私は 'FileOutputStream'で設定するオプションを見逃していました。私は' FileWriter'オプションだけを見ました。 –

0
try { 
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("myFile.txt", true), "UTF-8")); 
    out.write("Hello World"); 
    out.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
関連する問題