搜索重复代码_通过MappedByteBuffer搜索大文件
此應用程序對于在不適合BufferedReader、files.readAllLines()、files.lines()和Scanner的大文件中進行搜索非常有用。
我們將在這里討論的解決方案基于Java NIO.2、MappedByteBuffer和FileChannel。此解決方案從給定文件上的文件通道打開內存映射字節緩沖區(mapped byte buffer)。我們遍歷獲取的字節緩沖區并查找與搜索字符串的匹配項(此字符串轉換為字節byte[],然后逐字節進行搜索)。
對于相對較小的文件,將整個文件加載到內存中會更快(如果RAM允許的話)。對于大型/大型文件,以塊(例如,5 MB的塊)的形式加載和處理文件會更快。加載塊后,必須計算搜索字符串的出現次數。我們存儲結果并將其傳遞給下一個數據塊。我們重復這個直到整個文件被遍歷。
讓我們來看看這個實現的核心代碼(查看與本書捆綁在一起的源代碼以獲得完整的代碼):
這個解決方案非常快速,因為文件直接從操作系統的內存中讀取,而不必加載到JVM中。操作在本機級別(稱為操作系統級別)進行。注意,此實現僅適用于UTF-8字符集,但也可以適用于其他字符集。
完整的應用程序在GitHub上可用。
如果您喜歡這篇文章,那么我相信您一定會喜歡Java編碼問題的第6章。本章專門討論Java中的文件/文件夾操作。
這么多大牛的代碼,如果您希望換一個工作,如果您希望換一個工作環境,來來來:
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的搜索重复代码_通过MappedByteBuffer搜索大文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis stream持久化_Beet
- 下一篇: js中执行到一个if就停止的代码_Nod