我有一个问题,需要我从本地机器解析一个文本文件。有一些并发症:
- 文件可能非常大(700mb+)
- 该模式出现在多行中
- 我需要在模式之后存储行信息
我使用BufferReader
,String.indexOf
和String.substring
( 来获取第 3 项) 创建了一个简单的代码。
在文件内部,它有一个命名为code=
在不同块中多次出现的键(模式)。程序使用 . 从这个文件中读取每一行BufferReader.readLine
。它用于indexOf
检查模式是否出现,然后在模式之后提取文本并存储在公共字符串中。
当我使用 600mb 文件运行程序时,我注意到处理文件时性能最差。我在 CodeRanch 中阅读了一篇文章,Scanner
该类不适用于大文件。
是否有一些技术或库可以提高我的表现?
提前致谢。
这是我的源代码:
String codeC = "code=[";
String source = "";
try {
FileInputStream f1 = new FileInputStream("c:\\Temp\\fo1.txt");
DataInputStream in = new DataInputStream(f1);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
boolean bPrnt = false;
int ln = 0;
// Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
if (strLine.indexOf(codeC) != -1) {
ln++;
System.out.println(strLine + " ---- register : " + ln);
strLine = strLine.substring(codeC.length(), strLine.length());
source = source + "\n" + strLine;
}
}
System.out.println("");
System.out.println("Lines :" + ln);
f1.close();
} catch ( ... ) {
...
}