Как отфильтровать список файлов?
Программа получает доступ к папке и выводит перечень файлов для дальнейшей работы с ними.
Папка resources -- файл x.111.txt
|------- файл x.112.txt
|------- файл x.113.txt
|------- файл y.111.txt
Как правильно написать фильтр, чтоб исключить файл y.111.txt из списка (по символу "y")?
Main.java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) throws IOException {
Path path = Paths.get("resources");
List<Path> paths = listFiles(path);
System.out.println(paths);
}
public static List<Path> listFiles(Path path) throws IOException {
List<Path> result;
try (Stream<Path> walk = Files.walk(path)) {
result = walk.filter(Files::isRegularFile)
.collect(Collectors.toList());
}
return result;
}
}
Ответы (1 шт):
Автор решения: DmitriyD
→ Ссылка
Если рассматривать простой случай и других условий нет, то добавить условие по фильтру в стриме
result = walk.filter(p -> !p.toString().contains("y") && Files.isRegularFile(p))
.collect(Collectors.toList());