大きなテキスト ファイルの最終行を効率的に取得する
大規模なテキスト ファイルを処理する場合、最終行を効率的に取得することが重要です。大きなファイルの場合、ランダム アクセスは時間がかかるため、現実的ではありません。代わりに、次の解決策を検討してください。
最後の非空白行を返す:
以下の tail 関数は、ファイルをロードしたりせずに、ファイルの最後の非空白行を迅速に取得します。ファイル全体を走査します。ファイルの末尾までシークし、改行に遭遇するまで文字を逆方向に読み取り、最後の行を構築して返します。
public String tail(File file) { // ... for (long filePointer = fileLength; filePointer != -1; filePointer--) { // ... sb.append((char) readByte); } // ... }
最後の N 行を返す:
代わりに最後の N 行が必要な場合は、tail2 関数を使用してください。これは同様の手法を使用していますが、出力を反転して構築する前に、改行をカウントして目的の行を決定します。
public String tail2(File file, int lines) { // ... for (long filePointer = fileLength; filePointer != -1; filePointer--) { line = line + 1; sb.append((char) readByte); } // ... }
呼び出しと使用:
File file = new File("D:\stuff\huge.log"); System.out.println(tail(file)); System.out.println(tail2(file, 10));
Unicode に関する考慮事項:
実装では、文字反転を使用して行を再構築します。これは一般に効果的ですが、アクセントや帽子などの文字で Unicode 反転の問題が発生する可能性があります。したがって、さまざまな言語でこのアプローチを使用する前に、徹底的なテストが不可欠です。
以上が大きなテキスト ファイルの最後の行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。