[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-chto-vy-znaete-ob-interfeyse-filefilter":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},674,"chto-vy-znaete-ob-interfeyse-filefilter",15,"i-o-nio","I\u002FO & NIO","📁","Что вы знаете об интерфейсе FileFilter?","`FileFilter` — функциональный интерфейс из пакета `java.io`, применяемый для фильтрации файлов и каталогов при получении содержимого каталога через метод `File.listFiles(FileFilter)`.\n\nИнтерфейс содержит единственный метод `boolean accept(File pathname)`, который должен вернуть `true`, если файл соответствует критерию фильтрации. Поскольку `FileFilter` — функциональный интерфейс (один абстрактный метод), он может быть реализован через лямбда-выражение.\n\n### Примеры\n\n```java\nFile dir = new File(\"\u002Fhome\u002Fuser\u002Fdocuments\");\n\n\u002F\u002F Через лямбду: только обычные файлы\nFile[] files = dir.listFiles(f -> f.isFile());\n\n\u002F\u002F Только файлы с расширением .java\nFile[] javaFiles = dir.listFiles(f -> f.getName().endsWith(\".java\"));\n\n\u002F\u002F Только каталоги\nFile[] dirs = dir.listFiles(File::isDirectory);\n```\n\nСуществует также интерфейс `FilenameFilter` с методом `boolean accept(File dir, String name)`, который передаёт каталог и имя файла отдельно. `FilenameFilter` удобнее, когда фильтрация идёт только по имени. В NIO.2 аналогом является `DirectoryStream.Filter\u003CPath>`, а также glob-шаблоны в `Files.newDirectoryStream(path, \"*.java\")`.\n\n> **На собеседовании:** объясните, что `FileFilter` — функциональный интерфейс с методом `accept()`, используемый для фильтрации результатов `listFiles()`. Покажите пример с лямбдой и упомяните `FilenameFilter` как альтернативу.","","junior",[15,16,17,18],"core","file","io","interface",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":35,"featuredSnippetReady":36},"Интерфейс FileFilter в Java — Gymterview","FileFilter: функциональный интерфейс для фильтрации файлов. Метод accept(), использование с лямбдами, сравнение с FilenameFilter и NIO.2 аналогами.","FileFilter — функциональный интерфейс с методом accept(File) для фильтрации файлов при вызове listFiles().",[26,27,28,29,30,31,32,33,34],"FileFilter","FilenameFilter","accept","listFiles","лямбда","функциональный интерфейс","DirectoryStream","Java IO","собеседование","FileFilter — функциональный интерфейс из java.io с единственным методом boolean accept(File pathname). Используется с File.listFiles(FileFilter) для фильтрации элементов каталога. Реализуется через лямбду: dir.listFiles(f -> f.getName().endsWith(\".java\")). Альтернатива — FilenameFilter с методом accept(File dir, String name). В NIO.2 аналог — DirectoryStream.Filter\u003CPath>.",true]