可能重複:
exception while Read very large file > 300 MBjava:如何在一個大文件中搜索字符串?
現在,我想從一個大文件(> = 300M)搜索的字符串。由於文件很大,所以我無法將其加載到內存中。
可以提供什麼樣的方式來解決這個問題?
感謝
可能重複:
exception while Read very large file > 300 MBjava:如何在一個大文件中搜索字符串?
現在,我想從一個大文件(> = 300M)搜索的字符串。由於文件很大,所以我無法將其加載到內存中。
可以提供什麼樣的方式來解決這個問題?
感謝
有幾個選項:
我會記憶映射文件。不管文件大小(高達2 GB),這不會佔用太多堆(< 1 KB),並且在大多數系統上需要大約10 ms。
FileChannel ch = new FileInputStream(fileName).getChannel();
MappedByteBuffer mbb = ch.map(ch.MapMode.READ_ONLY, 0L, ch.size());
這工作只要你有至少4 KB的自由(和你的文件小於2 GB長)
聽起來不錯! – zgcharley 2012-02-10 08:05:37
好的是它留給操作系統來確定主內存中有多少(在後臺)你可以編寫代碼,就好像一切都可以立即使用,而不必擔心你有多少空閒內存或哪些頁面更長的需要。 – 2012-02-10 08:07:23
參見http://stackoverflow.com/questions/3584540/read-and- process-big-text-file-in-java – DNA 2012-02-08 15:04:37
http://docs.oracle.com/javase/6/docs/api/java/nio/channels/FileChannel.html#map%28java.nio.channels.FileChannel。 MapMode,%20long,%20long%29 – Bozho 2012-02-08 15:05:09