java代码从大文件中提取文本部分,仅使用最小RAM

标签 java file text file-io

我有巨大的文本文件 - 每个文件有 10 GB 大。

现在,我有 2 个字符串 "StringNumber1""StringNumber2"

“Stringnumber1”在每个文本文件中只出现一次,并且 “StringNumber2” 始终位于 “StringNumber1” 之后(尽管 可能出现超过 1 次) >文本文件中的“StringNumber2”)。

我想提取每个文件中出现的所有文本,从匹配“StringNumber1”开始,一直到紧随匹配“StringNumber1”之后出现的“StringNumber2”( "StringNumber1""StringNumber2" 之间的内容可能是几个字节到许多 GB)...

如何使用最少的 RAM 提取此类内容?我想用 Java 来做这个。

最佳答案

仅使用 BufferedReader 还不够好吗?嗯,我从来没有遇到过读取大文件的问题。使用此方法时您是否遇到某种错误?

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Read {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("someFile"));
        try {
            String line = br.readLine();
            while (line != null) {
                if(line.contains("String 1")) {
                    // ...
                } else if (line.contains("String 2")) {
                    // ...
                }               
                line = br.readLine();
            }       
        } finally {
            br.close();
        }
    }
}

关于java代码从大文件中提取文本部分,仅使用最小RAM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14292448/

相关文章:

java - 使用 junit 和 PowerMockito 在单元测试中模拟文件操作不起作用

java - 逐行以相反顺序读取文件,无需太多开销

C#.NET 导入注册表配置单元并解析其内容

c++ - 如何在 C++ 中使用 GLUT/OpenGL 绘制文本?

C 随机,有问题

java - 在 Java EE 中使用过滤器进行授权

java - Maven 构建因 Spring-cloud-contract-verifier 而失败

java - 使用 TLS PSK 加密时如何正确检测流结束?

java - 我的车库里真的有车吗?

java - 如何写一个文件事务?