2009-07-15 10 views
2

ファイルから読み込まれたユニコード文字列を操作するプログラムを作成しようとしています。 2つのアプローチが考えられました。一つは、改行を含むファイル全体を読み込み、いくつかの正規表現の置換を実行し、別のファイルに書き戻します。もう片方はファイルごとに行ごとに読み込んで個々の行にマッチさせて置き換えて書き出します。文字列の改行が改行としてファイルに書き込まれていないため、私は最初のアプローチをテストできませんでした。ここで説明するためにいくつかのサンプルコードです:文字列の改行がファイルに書き出されない

String output = "Hello\nthere!"; 
BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("test.txt"), "UTF-16")); 

System.out.println(output); 
oFile.write(output); 
oFile.close(); 

print文の出力が

こんにちは

が、ファイルの内容が

Hellothereです!

改行がファイルに書き込まれないのはなぜですか?あなたがここ

System.getProperty("line.separator") 

を使用してみてください

+3

メモ帳で\ nだけのテキストファイルを正しく表示することはできません。 – akarnokd

+0

まだそれが\ r \ nであるかどうかを確認してください –

+0

ええ、私はちょうどそれを試して、それが動作します。奇妙なことに、何らかの理由でメモ帳を覚えているのは、それだけで0x0Aが見えても文字グリフが表示されていないことです。 –

答えて

9

は 文字列内の改行ではないので、私は最初 アプローチをテストすることができていない未テストの例

String output = String.format("Hello%sthere!",System.getProperty("line.separator")); 
BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("test.txt"), "UTF-16")); 

System.out.println(output); 
oFile.write(output); 
oFile.close(); 

です ファイルに改行として書かれています

それは本当ですか?その特定の事実を示すいくつかのコードを投稿できますか?

+0

それは、一度に1行でファイルを読む方法しか知りませんので、私が提供していた*改行は書かれていましたが、CRLFではなくLFとしてしか正しく表示されませんでしたメモ帳、kd304が指摘したとおりです。 –

1

プラットフォーム固有の改行を取得するには、System.getProperty( "line.separator")を使用します。

1

PrintWriterを使用して、printlnメソッドを取得することを検討してください。 System.out