![](/img/trans.png)
[英]BufferedReader found specific word in line, take the data from that line
[英]How to find if the BufferedReader class object contains a specific word without going through line by line?
我有一些日志文件,其中生成日志的文件的名称写在未知行。
有为其生成日志的固定文件。 所以这些文件的名称:Image_1,Image_5,Image_10,Image_25。
为了获取为其生成日志的文件的名称,我必须逐行遍历 BufferedReader br 并检查所有 4 个名称,如果该名称出现在某个需要大量时间的行中。
如果 BufferedReader object 包含特定单词,是否有任何方法可以遍历这 4 个名称并检查 Bufferedreader。 BufferedReader 的类似 String.contains("s") 的东西。 是否有可能以这种方式或更好的选择?
可以为 BufferedReader 指定缓冲区大小,但您必须实际读取行。 最简单的做法是:
Path path = Paths.get("my.log");
// Assume UTF-8 (is default):
Optional<String> img = Files.lines(path)
.filter(line -> line.matches("Image_(10?|5|25).*"))
.findAny();
String file = img.orElse("NOT FOUND");
或更好
try (Stream<String> in = Files.lines(path)) {
Optional<String> img = in
.filter(line -> line.matches("Image_(10?|5|25).*")
.findAny();
String file = img.orElse("NOT FOUND");
}
澄清:
可以读取一些字节缓冲区并将其转换为要搜索的字符串。问题是对于 UTF-8 缓冲区可能以拆分的多字节序列结束。 不难处理,但为什么不使用简单的代码,而不取决于缓冲区大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.