可能重复:
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