2016-11-24 20 views
0
BufferedWriter bw = new BufferedWriter(new FileWriter("test.csv", true)); 
bw.append(System.lineSeparator()); 
bw.append("Text after writing")); 

を次のようになります。)BufferedWriterのラインセパレータは上記のコードは以下になります二重線の区切りに

Text already in file before writing 

Text after writing 

System.lineSeparatorがなければ(、それはなります:

Text already in file before writingText after writing 

私が欲しいものです:

Text already in file before writing 
Text after writing 

私はtr ied \ nとbw.newLine()も同様ですが、すべて同じ結果になります。なぜそれは2行を残して、それを避ける方法ですか?

+0

[私のため細かい作品](http://ideone.com/fu6Vpr)、 'StringWriter'に書き込みます。どのようにファイルの内容を見ていますか? 'cat test.csv |は何ですか? xxd'ショー? –

+0

'file test.csv'の出力は何ですか?私はあなたがファイル自体ではなく、ファイルを表示するために使用するプログラムに問題があると思います。または、ファイルを転送するためにテキストモードでftpを使用すると、途中で壊れてしまいます。 –

+0

@AndyTurnerそのコマンドは、「書き込み後のテキスト」の前に '...'を表示します。 – DxHito

答えて

0

コードを試したところ、期待どおりに動作しました。

コード

try (BufferedWriter bw = new BufferedWriter(new FileWriter("test.csv", true))) { 

    bw.append("Text after writing"); 
    bw.append(System.lineSeparator()); 

} catch (IOException e) { 
    e.printStackTrace(); 
} 

のtest.CSV前:おそらく

1. Text already in file before writing 
2. Text after writing 

:後

1. Text already in file before writing 

のtest.CSV編集中のファイルは既に新しい行で終わります。追加する前に確認することを検討することができます。

注:コードを簡潔にするためにtry-with-resourceを使用しました。

注:上でテスト:jre1.8.0_77、Win7の(x64)の

関連する問題