以下は私のコードのスナップショットです。入力ファイルのサイズは 45 Mb です。
Scanner fileScanner = new Scanner(file);
String scannedFarm;
try{
Pattern p = Pattern.compile("^(?:.+(?:\\r?\\n|\\Z)){2,}",Pattern.MULTILINE);
while((scannedFarm = fileScanner.findWithinHorizon(p, 0)) != null){ // Throws Exception
...
...
例外がスローされる理由を明確にする追加情報を追加します。ファイル形式を説明する関連する質問が役立つ場合があります: Java, Regular Expression HasNext starts with empty line, multiplatform support .
ところで:これはチャームのような小さなファイルで機能しますが、大きなファイルでは失敗します。文字列にはfindWithinHorizonから返される最大サイズがありますか?
アップデート
小さなスタック トレースが要求されたように:
ファイル スナップショットの小さな例: