高效檢索大型文本文件的最後一行
處理大量文本文件時,高效檢索最後一行至關重要。對於大檔案來說,隨機存取可能非常耗時,因此不切實際。相反,請考慮以下解決方案:
返回最後一個非空白行:
下面的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 反轉問題。因此,在跨各種語言使用此方法之前,徹底的測試至關重要。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3