我有一个带有250k +文本行的ASCII格式文件,我需要执行两个步骤。
1)扫描整个文件,并通过匹配给定的正则表达式模式来描绘部分。
2)读取每个数据部分并从中解析子部分。
一种选择是使用BufferedReader对文件进行面向行的扫描,测试每一行的匹配并存储匹配的行号。
是否有更有效的选项可能使用nio名称空间?
答案 0 :(得分:0)
也许通过一连串的流来抽取文件;一个流只传递与正则表达式匹配的部分,后跟一个执行解析步骤的流。
e.g。
OutputStream os = RegexFilterOutputStream(
new ParsingStuffOutputStream()
);
while(input not empty) {
// write stuff from input to os
}