我有以下文本文件,我希望在5月21日的字符串匹配的基础上在java中阅读。 (2017年5月21日12:32:30至2017年5月21日12:32:36)
====================abc.txt===========
20-May-2017 12:32:28 :: record logged
20-May-2017 12:32:29 :: record logged
21-May-2017 12:32:30 :: record logged
21-May-2017 12:32:31 :: record logged
21-May-2017 12:32:28 :: record logged
21-May-2017 12:32:32 :: record logged
21-May-2017 12:32:33 :: record logged
21-May-2017 12:32:34 :: record logged
21-May-2017 12:32:36 :: record logged
22-May-2017 12:32:38 :: record logged
22-May-2017 12:32:41 :: record logged
22-May-2017 12:32:42 :: record logged
22-May-2017 12:32:43 :: record logged
======================================
是否有人解释/举例说明从大文本文件中读取此类块的优化方法。
目前我正在尝试使用apache io包,但此功能也已过时。
ReversedLinesFileReader object = new ReversedLinesFileReader(file);
String sCurrentLine ="";
while((sCurrentLine = object.readLine()) != null && sCurrentLine.contains("21-May-2017"))
{
out.write(sCurrentLine);out.newLine();
}
答案 0 :(得分:0)
您可以尝试Java 8方法:
try(Stream<String> lines = Files.lines(Paths.get(filePath))) {
//filter lines here
}
答案 1 :(得分:0)
如果我理解正确,则使用ReversedLinesFileReader以相反的顺序读取文件。我不认为这是你需要的,除非你总是希望数据在文件的末尾。
如果字符串以日期模式开头,我会使用BufferedReader而不是Reading a plain text file in Java并使用sCurrentLine.contains或sCurrentLine.startsWith。