我正在尝试编写一个带有关键字并搜索文件列表的函数,然后打印出包含关键字的任何文件。
到目前为止,我所拥有的只是一个文件列表和关键字。
File[] files = new File("<directory>").listFiles();
Scanner keyword = new Scanner("hello");
我认为现在我需要构建一些循环来查找关键字的文件。任何帮助甚至易于遵循的教程表示赞赏。
编辑:
文件是仅包含一行的文本文件
答案 0 :(得分:3)
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.");
}
答案 1 :(得分:0)
如果您想使用扫描仪类,可以使用以下方法扫描文件以查找特定关键字: 扫描程序只是一个迭代器,它扫描提供给它的输入。
Scanner s = new Scanner(new File("abc.txt"));
while(s.hasNextLine()){
//read the file line by line
String nextLine = s.nextLine();
//check if the next line contains the key word
if(nextLine.contains("keyword"))
{
//whatever you want to do when the keyword is found in the file
and break after the first occurance is found
break;
}
}