よく知られているように,テキストを改行する際の文字コードは環境に依存する.Windowsでは\r\n, Linuxでは\nとか.
汎用的に改行コードを検知するにはどうしたらいいかと思ってOpenJDKのソースコードを見てみると
Scannerクラスでは以下のような正規表現が使われていたのでメモしておく.
Scanner.java(500行目付近)
String LINE_SEPARATOR_PATTERN = "\r\n|[\n\r\u2028\u2029\u0085]";
ちなみに,u2028はLine Separator,u2029はPragraph Separator,u0085はNext Line らしい
なお,BuffredReaderクラスではもうちょっと泥臭い読み方をしている模様
BufferedReader#read()(180行目あたり)
if (skipLF) {
skipLF = false;
if (cb[nextChar] == '\n') {
nextChar++;
continue;
}
}
BufferedReader#readline()(350行目あたり)
if (c == '\r') {
skipLF = true;
}