java - 逐行读取文件并打印该行(如果该行包含枚举中的任何值)

标签 java

So far I did is 

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
public class project2 {
  public static void main( String[] args ) throws IOException {
      File file =new File("D:/log/logging.log");
      Scanner in = null;
      try {
          in = new Scanner(file);
          while(in.hasNext())
          {
              String line=in.nextLine();
                  if(line.contains(""))
                      System.out.println(line);
          }
      } catch (FileNotFoundException e) {
          e.printStackTrace();
      }
    }

 } 
 public class Example(
    public enum Searchword {
        info,debug
    }}

我需要搜索该行是否包含任何一个枚举值,然后需要打印该行。是否可以搜索以及如何搜索。

最佳答案

使用 java.nio 和 Java 8 Streams - 有一种声明式方法

import java.nio.file.*;
import java.util.stream.Stream;

public class Main {

    enum Search { info, debug }

    public static void main(String[] args) throws Exception {
        Path path = Paths.get("pathToFile");

        Files.lines(path)
             .filter(Main::containsSearchTerm)
             .forEach(System.out::println);
    }

    public static boolean containsSearchTerm(String input) {
        return Stream.of(Search.values())
                     .map(Search::name)
                     .anyMatch(input::contains);
    }
}

关于java - 逐行读取文件并打印该行(如果该行包含枚举中的任何值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825759/

相关文章:

java - 为什么有时会先打印 System.err 语句?

java - 通过注释实现@Autowired @Lazy @Components 的最佳方法?

java - 从节点中删除文本,但不删除后代节点中的文本

java - 文本在屏幕上不断滚动

java - 减去两次后 TextView 上没有任何显示(hh :mm:ss)

java - 根据另一个字符串数组的值从一个数组中仅提取某些对象

java - 如何在 SharedPreferences 中保存 JSON 数组?

java - Sun JDK 1.5 cannot dereference with generics 错误

java - JAXB 将 Collection 一次性编码为 XmlElement 和 XmlAttribute

java - 如何从 servlet 获取 ajax 调用的响应