ファイルの終端文字が改行、復帰コードであるか判定する

BufferedReaderのreadLine()メソッドは
行の終端文字を戻り値を含まないため
ファイルの最後に改行「\n」か、復帰「\r」コードが
含まれているかどうかの判別ができません。


以下はreadLine()メソッドのJava APIドキュメントからの抜粋です。

1行のテキストを読み込みます。
1行の終端は、改行 (「\n」) か、復帰 (「\r」)、
または復行とそれに続く改行のどれかで認識されます。

戻り値:
行の内容を含む文字列、ただし行の終端文字は含めない。
ストリームの終わりに達している場合は null


下記メソッドにて判定を行えるようにしています。



/**
* ファイルの終端文字が改行、復帰コードであるかを判定を行います.
*
* @param file 読み込み対象ファイル
* @return 終端文字が改行、復帰コードの場合はtrue、そうでない場合はfalse
* @throws Exception
*/
public boolean isLineFeed(File file) {
boolean isLineFeed = false;
RandomAccessFile randomFile = null;
try {
randomFile = new RandomAccessFile(file, "r");
randomFile.seek(file.length() - 1);

int lastChar = randomFile.read();

// 改行コード=10、復帰コード=13
if (lastChar == 10 || lastChar == 13) {
isLineFeed = true;
}

} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (randomFile != null) {
randomFile.close();
randomFile = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
return isLineFeed;
}