Java随机文件读取

时间:2017-05-16 11:01:38

标签: java file bufferedreader

我有以下文本文件,我希望在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();
}

2 个答案:

答案 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。