Javaで改行する方法
Javaで文字列を改行する方法です。
Javaで改行コードを扱うには、いくつかの方法があります。改行コードを直書きする方法、プロパティから取得して利用する方法、BufferedWriter.newLine を利用する方法などです。改行コードは OS に依存します。Linux 上で作られたファイルを Windows 上で読み込んだりするケースもありますから、動作環境に合わせて、きちんと仕様を決めることが大切です。
ここでは Javaで文字列の途中で改行する方法 を紹介します。
Sponsored Links
改行コードのパターン
テキストの改行を表現する方法は、下記の3パターン存在します。
OS | 改行コード |
---|---|
Windows系OS | rn (CR+LF) |
Unix系OS全般 Mac OS X | n (LF) |
Mac OS 9以前 | r (CR) |
余談ですが HTTP やメールのプロトコルでは、改行コードとして CRLF が定められているようですね。
Sponsored Links
検証環境
今回は Windows 7、Java 7 で Eclipse 上で検証しています。
改行コードを直書きする方法
一番簡単な方法、改行コードの直書きです。
こんな感じ書きます。
String test1 = "ABCD\nEFG"; System.out.println(test1);
結果はこうなります。
ABCD EFG
ふむ、簡単ですね。
Sponsored Links
改行コードをプロパティから取得する方法
次に OS の改行コードを取得して利用する方法です。
こんな感じ書きます。
String lineSepa = System.getProperty("line.separator"); String test2 = "ABCD" + lineSepa + "EFG"; System.out.println(test2);
結果はこうなります。
ABCD EFG
デバッグすれば \n が入っていることがわかります。
システム間の OS が一致しているのであれば、使える方法ですね。
BufferedWriter.newLineを使用する方法
BufferedWriter クラスの newLine メソッドは、プログラムを実行している OS 環境に合わせて自動で改行コードを判断して出力してくれます。
自動で改行コードを判断ってところが、実は不具合を引き起こす原因だったりします。
上図を翻訳するとこうです。
改行文字を書き込みます。改行文字は、システムの line.separator プロパティにより定義され、必ずしも単一の改行文字 (「¥n」) であるとは限りません。
つまり、上記でも説明した「System.getProperty("line.separator")」を使用しているってことになります。
Linux 上でファイルを作って、Windows で使うとかになった場合、改行コードが不具合を起こす可能性がありますので十分に注意しましょう。
サンプルを作るとすればこんな感じでしょうか。
public static void main(String[] args) { List<String> list = Arrays.asList("あいうえお","かきくけこ","さしすせそ","たちつてと","なにぬねの"); String path = "C:/test.txt"; String encoding = "Windows-31J"; //String encoding = "EUC-JP"; boolean ret = fileWriter(list, path, encoding); System.out.println(ret); } private static boolean fileWriter(List<String> list, String path, String encoding) { FileOutputStream fileStream = null; OutputStreamWriter outWriter = null; BufferedWriter writer = null; try { fileStream = new FileOutputStream(path); outWriter = new OutputStreamWriter(fileStream, encoding); writer = new BufferedWriter(outWriter); for ( int i = 0; i < list.size(); i++ ) { if ( i > 0 ) writer.newLine(); //if ( i > 0 ) writer.write("n"); String record = list.get(i); writer.write(record); } writer.flush(); } catch ( IOException e ) { e.printStackTrace(); return false; } finally { try { fileStream.close(); outWriter.close(); writer.close(); } catch ( IOException e ) { return false; } } return true; }
newLine メソッドを利用して改行コードを追加しています。"n"にしたい場合は writer.write("n") としてください。
出力されたファイルを確認すると・・・、
おおおー、ちゃんと改行されている―^^
バイナリエディタで見ると改行コードは 0D 0A (CR+LF)となっていました。
Windows 環境で newLine しているので、デフォルト CRLF になります。
Sponsored Links
まとめ
Javaで文字列の途中で改行する方法を紹介しました。
改行コードは、システム間の連携やファイル作成にはなくてはならない存在です。そのため安易に考えていると、連携テストの際に不具合を発生させたりします。
環境や仕様を十分に検討して、検証もきっちりおこないましょうね。
おつかれさまでした。
Sponsored Links