![](/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.