檢查文件是否包含特定字符串或數字的最快方法是什麼?使用java在文本文件中查找字符串的最快方法
3
A
回答
5
查看JDK提供的Scanner
類(See official documentation)。您將能夠跳過某些輸入部分(在本例中爲文本文件),並與您的願望的正則表達式相匹配。我不確定這是否是最有效的方式,但肯定 - 這很簡單。你也可以看看this example,這會幫助你開始。
2
未嘗試過,但可能最快的機制是首先將您的搜索關鍵字編碼爲文件。例如,如果您知道該文件是UTF-8,請取出您的密鑰並將其從一個字符串(UTF-16)編碼爲UTF-8字節數組。這很重要,因爲通過編碼到文件表示,您只能對密鑰進行編碼。使用標準的Java閱讀器則是另一種方式 - 將文件轉換爲UTF-16。
現在您已經有了一個正確的密鑰,以字節爲單位,使用NIO爲該文件創建一個MappedByteBuffer。這將文件映射到虛擬內存空間。
最後,執行字符串搜索一個Boyer-Moore algorithm,使用針對通過映射區域的文件的字節的關鍵字節,
有可能是一個更快的方法,但是這解決了大部分問題在Java中搜索文本文件。它利用虛擬機來避免複製文件的大塊,並且跳過文件轉換爲UTF-16的轉換步驟,而UTF-16是Java在內部使用的。
0
0
我在MIMEParser找到的最好的實現: https://github.com/samskivert/ikvm-openjdk/blob/master/build/linux-amd64/impsrc/com/sun/xml/internal/org/jvnet/mimepull/MIMEParser.java
/**
* Finds the boundary in the given buffer using Boyer-Moore algo.
* Copied from java.util.regex.Pattern.java
*
* @param mybuf boundary to be searched in this mybuf
* @param off start index in mybuf
* @param len number of bytes in mybuf
*
* @return -1 if there is no match or index where the match starts
*/
private int match(byte[] mybuf, int off, int len) {
還需要:
private void compileBoundaryPattern();
相關問題
- 1. 在文件中查找字符串的最快方法
- 2. 在文本文件中查找子串的最快方法
- 3. Java - 讀取文本文件的最快方法字符字符
- 4. 在文本文件中搜索字符串的更快方法
- 5. 在文件中搜索字符串的最快方法
- 6. 在另一個字符串中查找字符串子集的最快方法?
- 7. 查找文本文件中出現的最大字符串
- 8. 找到字符串數組中字符串的最快方法
- 9. 在Java中逐行讀取文本文件的最快方法
- 10. 檢查大量文件中是否存在字符串的最快方法
- 11. 查找字符串並在java文本文件中追加文本
- 12. 使用Delphi在目錄中查找最舊文件的最快方法
- 13. 最快的方法 - 字符串組件
- 14. 在文本文件中查找字符串並尋找它們
- 15. 從Java中的文本文件中查找字符串中的數字
- 16. 無法在Java文件中查找字符串
- 17. Java:繪製文本的最快方法?
- 18. 在字符串中查找文本
- 19. 在XML中查找文本字符串
- 20. 使用sed在文本文件中使用其他文本文件中的字符串查找並替換
- 21. 查找文件中是否存在字符串的最佳方法
- 22. 如何在文本文件中查找字符串的位置
- 23. Java - 檢查字符串大小的最快方法
- 24. 在文件夾中搜索pdf文本字符串的更快方法
- 25. 在文本文件上查找字符串 - 批處理文件
- 26. 使用批處理腳本在文本文件中查找字符串
- 27. 使用VBS腳本在文本文件中查找特定字符串
- 28. 查找方法的字符串中的一個文件
- 29. 從文本文件中查找字母數字字符串
- 30. 在unix中找到文件中的字符串的快速方法
谷歌首次^ _ ^總是幫助:-D – Neal 2011-03-28 14:47:57
檢查此鏈接:http: //www.dreamincode.net/forums/topic/48905-search-inside-a-text-file/ – reggie 2011-03-28 14:48:19
我知道如何使用谷歌... 我想知道哪種方法更快...例如使用掃描儀或緩衝讀取器... – Franky 2011-03-28 15:02:02