java - 对大文本进行子串的更好方法是什么?

标签 java string file substring file-read

假设我的文件有 2GB,我想要其中的一些特定数据。索引到另一个索引(考虑两个索引之间的特定数据 300MB),更好的方法是什么?我尝试了 substring 但抛出内存不足异常。请建议更好的方法来做到这一点。

最佳答案

一般来说,假设磁盘上有 2GB 文件,并且您想将其中的一部分读入内存,则绝对不必先将整个 2GB 读入内存。

最直接的解决方案是使用 Random Access File

重点是它提供了一个指针的抽象,可以在大文件上来回移动,一旦设置好,您就可以从指针指向的位置读取字节。

RandomAccessFile file = new RandomAccessFile(path, "r");
file.seek(position);
byte[] bytes = new byte[size];
file.read(bytes);
file.close();

关于java - 对大文本进行子串的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54229491/

相关文章:

java - 如何覆盖TreeMap中的值?

java - 使用java删除文件

java - Java 一次 for 循环

java - 当我在另一个静态类下使用静态类时验证 instanceof

python - Pandas 如何过滤多个系列的子串

string - 如何替换 Lua 字符串中的 $?

c++ - 对包含整数的文本文件进行排序,必须逐行进行排序

java - 定时器对 ScheduledThreadPoolExecutor 的限制

java - 多线程 Java 应用程序中的 ConcurrentModificationException

java - 扫描仪不工作