java基础----递归实现文件搜索
生活随笔
收集整理的這篇文章主要介紹了
java基础----递归实现文件搜索
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package com.henu.io;import java.io.File;
/**??????????????????????????????????????????*不使用文件過濾器,則看文件的絕對路徑,如果這個路徑中沒有.java文件,則搜索不出**/
public class Demo05_遞歸實現文件搜索 {public static void main(String[] args) {File file = new File("F:\\workspace\\第一階段\\days01\\Days07\\src\\com\\henu\\io");
// printDir(file);printDir(file, ".java");}//搜索F:\workspace\第一階段\days01\Days07 目錄中的.java 文件。public static void printDir(File f) {File[] files = f.listFiles();for (File file : files) {boolean b = file.isFile();if (b) {//endsWith后綴,if (file.getName().endsWith(".xml")) {//public String getName()返回由此抽象路徑名表示的文件或目錄的名稱。System.out.println(file);}else {printDir(file);}}}}public static void printDir(File f, String suffix) {File[] files = f.listFiles();for (File file : files) {boolean b = file.isFile();if (b) {//endsWith后綴,if (file.getName().endsWith(suffix)) {//public String getName()返回由此抽象路徑名表示的文件或目錄的名稱。System.out.println(file);}else {printDir(file,suffix);}}}}}
package com.henu.io;import java.io.File;
import java.io.FileFilter;/** java.io.FileFilter是一個接口,是File的過濾器。 該接口的對象可以傳遞給File類的listFiles(FileFilter) 作為參數, 接口中只有一個方法。boolean accept(File pathname) :測試pathname是否應該包含在當前File目錄中,符合則返回true。分析:1.接口作為參數,需要傳遞子類對象,重寫其中方法。我們選擇匿名內部類方式,比較簡單。2.accept方法,參數為File,表示當前File下所有的子文件和子目錄。保留住則返回true,過濾掉則返回false。保留規則:1.要么是.java文件。2.要么是目錄,用于繼續遍歷。3.通過過濾器的作用,listFiles(FileFilter)返回的數組元素中,子文件對象都是符合條件的,可以直接打印。*/
public class Demo06_FileFilter文件過濾器優化 {public static void main(String[] args) {File file = new File("F:\\workspace\\第一階段\\days01\\Days07\\src\\com");printDir(file,".java");}public static void printDir(File f, String string) {//1.列出該file下的所有文件和目錄File[] listFiles = f.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {//當file名是以指定后綴結尾的或者file是個目錄,則返回true//true當且僅當該抽象路徑名表示的文件存在且為目錄時; false否則 boolean b = f.getName().endsWith(string) || f.isDirectory();return b;}});for (File file : listFiles) {System.out.println(file);}//2.循環遍歷file數組for (File file : listFiles) {boolean b = file.isFile();if (b) {System.out.println(file);}else {printDir(file, string);}}}}
package com.henu.io;import java.io.File;public class Demo07_FileFilter使用Lambda優化 {public static void main(String[] args) {File file = new File("F:\\workspace\\第一階段\\days01\\Days07\\src\\com\\henu\\io");printDir(file,".java");}public static void printDir(File f,String suffix) {//1.列出該file下的所有文件和目錄 FileFilter是只有一個方法的接口,因此可以用lambda表達式簡寫。File[] files = f.listFiles((file) -> {return file.getName().endsWith(suffix)||file.isDirectory();});for (File file2 : files) {boolean b = file2.isFile();if (b) {System.out.println(file2);}else {printDir(f, suffix);}}}
}
?
?
?
?
總結
以上是生活随笔為你收集整理的java基础----递归实现文件搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java基础----递归
- 下一篇: java基础----IO字节流