改行コードを明示的に指定する

ファイルなどに書き出す改行コードはシステムプロパティの "line.separator" で定義されている。なので、この設定を変更すれば改行コードを変更することができる。

public void test() throws Exception {
    // default
    dump("a.txt");

    // dos style
    System.setProperty("line.separator", "\r\n");
    dump("b.txt");

    // unix style
    System.setProperty("line.separator", "\n");
    dump("c.txt");
}

public void dump(String filename) throws Exception {
    BufferedWriter w = new BufferedWriter(new FileWriter(filename));
    w.write("abcdefg");
    w.newLine();
    w.write("hijklmn");
    w.newLine();
    w.close();
}

ただしこの手法は JVMシステムプロパティを使用するため設定変更が JVM 全体に影響してしまうという問題がある。
改行コードを簡単に切り替えたい場合になんかいい方法ってないのかな。自分で OutputStream や Writer をラップするしかないのだろうか。もっと簡単にできたらいいのに。ていうか何かありそうなもんだが。