java:如何在大文件中搜索字符串?

标签 java file io

Possible Duplicate:
exception while Read very large file > 300 MB

现在,我想从一个大文件(>=300M)中搜索一个字符串。由于文件太大,无法将其加载到内存中。

可以提供哪些方法来处理这个问题?

谢谢

最佳答案

有几个选项:

  1. 根据您的目标操作系统,您也许可以将此任务移交给系统实用程序,例如 grep (它已经针对此类工作进行了优化)并简单地解析输出。
  2. 即使文件小到足以包含在内存中,您也必须以任何方式从磁盘读取它。因此,您可以简单地读入它,一次一行,然后将字符串与读取的内容进行比较。如果您的应用只需要查找目标文件中字符串的第一次出现,那么这样做的好处是,如果目标字符串出现在文件的早期,您就不必读取整个文件了查找文件前半部分中的内容。
  3. 除非您对应用程序的内存使用量有上限(即它必须绝对适合 128 MB RAM 等),否则您还可以增加启动应用程序时 JVM 将占用的 RAM 量。但是,由于这种方法效率低下(就时间和磁盘 I/O 而言,如 #2 中所述),无论文件大小如何,这都不太可能是您想要采取的方法。<

关于java:如何在大文件中搜索字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195856/

相关文章:

javascript - HTML Javascript 文件上传

C# 导入多个 txt 文件数据变得困惑

c++ - 如何在C++中以独占模式打开文件

java - BufferedInputStream 如何从操作系统请求数据 block

java - 在 Windows XP 上获取 Apppath

python - 在 tar 文件中获取文件字节偏移量(和长度)的方法

如果文件具有无效值/字符,Java 会抛出异常

java - Rest API 调用可在极短的时间内从多个 API 提供商获取数据 : Example websites like makemytrip

java - SpEL : get current bean name during bean instantiation

java - Hamcrest - 使用什么版本? 1.3 或 2