#改行コード
- CR: 復帰、\r
- LF: 改行、\n
- CR + LF: \r\n
\n とか \r はエスケープシーケンスで、16進数の数値にすると 0X0A
, 0X0D
らしい。
また、WindowsではCR+LF、unix系ではLF、MacOSではCRなど、実行環境によって使用する改行コードが異なる。
#実行環境での改行コード取得方法
final String BR = System.getProperty("line.separator");
これで、(アンドロイドに限らず)このコードの実行環境でのエスケープシーケンスが取得できる。
##アンドロイドでの改行コード
↓実行してみた。
アンドロイドでの改行コードは"\n"(LF)ということが分かった。
###(おまけ)(どうでもいい話)改行コードが分かるといろいろ便利
改行コードがわかるといろいろ便利である。
例えば、下のコードはファイルを読み込むコードの一部だが、bufferedReader.readLine()をすると文中の改行コードが消えてしまう。
そこで、読み込んだ1行をstringBuilderに追加したあと、改行を加えることで本来の位置に改行が存在することになる。ここで正しい改行コードを追加できないと期待通りの動きができなくなってしまうので、上記のやり方でコードを取得するといいだろう。
もちろん、わかっている場合はSystem.getProperty()を使わずにそのまま"\n"なり"\r"なりを入れればいい。
FileInputStream fileInputStream = context.openFileInput(fileName);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, StandardCharsets.UTF_8));
String line = bufferedReader.readLine(); // 最初の行を読み込む. 読み込み用のString変数
while (line != null) {
//読み込んだ行を追加する
stringBuilder.append(line);
//改行コードを追加する
final String BR = System.getProperty("line.separator");
stringBuilder.append("BR");
//次の行読み込み
line = bufferedReader.readLine();
}