现在,我想从一个大文件中搜索一个字符串(> = 300M)。因为文件很大所以我无法将其加载到内存中。
可以提供哪种方法来解决这个问题?
由于
答案 0 :(得分:1)
有几个选择:
答案 1 :(得分:1)
我会记忆地映射文件。无论文件大小(最大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)
,则此工作正常