そのため、Scannerクラスを使用してファイルからコンテンツを読み取るときに、興味深い問題が発生しました。基本的に、私はいくつかの精度メトリックを計算するために、ディレクトリから解析アプリケーションによって生成されたいくつかの出力ファイルを読み取ろうとしています。
基本的に、私のコードはディレクトリ内の各ファイルをウォークスルーし、スキャナーでそれらを開いてコンテンツを処理します。何らかの理由で、いくつかのファイル(すべてUTF-8でエンコードされている)がスキャナーによって読み取られていませんでした。ファイルが空ではなかったとしても、scanner.hasNextLine()は最初の呼び出しでfalseを返します(デバッガーを開いてこれを観察しました)。毎回Fileオブジェクトを使用してスキャナーを直接初期化していました(ファイルObjectsは正常に作成されました)。すなわち:
File file = new File(pathName);
...
Scanner scanner = new Scanner(file);
私はいくつかのことを試しましたが、最終的には次の方法でスキャナーを初期化することでこの問題を修正することができました。
Scanner scanner = new Scanner(new FileInputStream(file));
問題を解決できてうれしいですが、以前に問題を引き起こした可能性があることについては、まだ興味があります。何か案は?本当にありがとう!