ファイルの終端文字が改行、復帰コードであるか判定する
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;
}