我有巨大的文本文件 - 每个文件有 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/