Java:如何在文件中搜索关键字?

标签 java

我正在尝试编写一个函数,该函数采用关键字并搜索文件列表,然后打印出包含该关键字的任何文件。

到目前为止,我所拥有的只是文件列表和关键字。

File[] files = new File("<directory>").listFiles();
Scanner keyword = new Scanner("hello");

我想现在我需要构建某种形式的循环来遍历文件寻找关键字。即使是易于遵循的教程的任何帮助也是值得赞赏的。

编辑:

这些文件是仅包含一行的文本文件

最佳答案

File dir = new File("directory"); // directory = target directory.
if(dir.exists()) // Directory exists then proceed.
{ 
  Pattern p = Pattern.compile("keyword"); // keyword = keyword to search in files.
  ArrayList<String> list = new ArrayList<String>(); // list of files.

  for(File f : dir.listFiles())
  {
    if(!f.isFile()) continue;
    try
    {
      FileInputStream fis = new FileInputStream(f);
      byte[] data = new byte[fis.available()];
      fis.read(data);
      String text = new String(data);
      Matcher m = p.matcher(text);
      if(m.find())
      {
        list.add(f.getName()); // add file to found-keyword list.
      }
      fis.close();
    } 
    catch(Exception e)
    {
      System.out.print("\n\t Error processing file : "+f.getName());
    }

  }
  System.out.print("\n\t List : "+list); // list of files containing keyword.
} // IF directory exists then only process.
else
{
  System.out.print("\n Directory doesn't exist.");
}

关于Java:如何在文件中搜索关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15531634/

相关文章:

java - 如何在Spring Boot应用程序中的@Transactional方法中使用纯Hibernate保证原子批量插入

java - 无法捕获 main 方法中生成的随机数?

java - 在java中对 map 进行排序

java - 在锁定屏幕的情况下运行应用程序时,JobScheduler 作业无法启动

java - 在包中组织代码时遇到问题

java - 只获取嵌套表的父行

java - onActivityResult 未调用

java - 如何检查Spring Boot应用程序在自动配置类中是否有某个注释

java - 将联系人照片添加到 ImageView 的简单方法?

java - Named Query or Native Query or Query 从性能角度看哪个更好?