提问人:SAMUELE BERNARDI 提问时间:7/3/2023 最后编辑:Dmitriy PopovSAMUELE BERNARDI 更新时间:7/3/2023 访问量:47
跳过一行而不在 Java 的 .log 文件中读取它
Skipping a line without reading it in a .log file in Java
问:
我必须读取一个 8GB 的 .log 文件来提取一些信息,但在该文件中,有很多行我不需要。其中一些太长(超过 15,000,000 个字符),以至于会减慢代码速度,并且需要一天多的时间才能全部阅读(无需执行任何其他操作)。
我需要一些可以读取行中第一个单词的东西,如果它以特定序列开头,则跳过它而不读取任何字符。
我尝试了 ,但由于它说它跳过了匹配的模式,因此它必须读取该行才能匹配它。这样,它仍然读取极长的字符序列,这使得程序太慢。skip
这是我到目前为止完成的代码:
File logFile = new File(logFilePath);
Scanner fileScanner = new Scanner(logFile);
while (fileScanner.hasNextLine()) {
String currentLine = fileScanner.next();
if (currentLine.equals("messaggio:")) {
fileScanner.skip("\n"); // This is where I want to skip the line WITHOUT reading it
}
else {
// Other code
}
}
fileScanner.close();
答:
0赞
Mar-Z
7/3/2023
#1
还行。仅仅使用没有任何缓冲的 Scanner API 是一个坏主意。请尝试以下操作:
溶液
BufferedReader in
= new BufferedReader(new FileReader("data/test.log"));
in.lines().parallel()
.filter(l -> l.startsWith("messagio:"))
.forEach(TestApplication::doSomething);
评论