」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何有效率地檢索大文本文件的最後一行?

如何有效率地檢索大文本文件的最後一行?

發佈於2024-11-16
瀏覽:600

How to Efficiently Retrieve the Last Line of a Large Text File?

高效檢索大型文本文件的最後一行

處理大量文本文件時,高效檢索最後一行至關重要。對於大檔案來說,隨機存取可能非常耗時,因此不切實際。相反,請考慮以下解決方案:

返回最後一個非空白行:

下面的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