あなたは、ほとんど存在し、Files.walk
は、ディレクトリ内のすべてのファイルを反復処理するための正しい方法です。 Here'sそれのjavadocが、これはこう言われる、
戻りなまけ与え始まるファイルをルートファイル ツリーを歩いてパスが移入されストリーム。
あなたがする必要があるのは、他の方法には、このメソッドの呼び出しをラップ(つまり、パスと検索文字列を受け入れる)と一致するファイルをのリストを返す、例えば次のとおりです。
public List<String> search(String path, String searchString) throws Exception{
Stream<Path> paths = Files.walk(Paths.get(path));
try{
List<String> files = paths
.filter(Files::isRegularFile)
.filter(p -> p.getFileName().toString().toLowerCase().contains(searchString))
.map(p -> p.toString())
.collect(Collectors.toList());
return files;
}finally{
if(null != paths){
paths.close();
}
}
}
この例では、ファイルのみを返します。あなたはそれは同様のディレクトリを返したい場合、あなたはOR
条件でFiles.isDirectory
メソッドを使用することができます。ここにはisDirectoryのjavadocがあります。