java-IO流-搜尋含java字元的檔案問題
阿新 • • 發佈:2021-05-25
問題
在指定的檔案件下,搜尋含有‘java‘的檔名稱並打印出來
基本思路
生成一個file例項
判斷是檔案還是目錄
是檔案判斷是否含有java,有則列印
是目錄則進入filterDir(File file,String filter)方法
把目錄下的檔案都放在一個file[]陣列中,
分別進行判斷是檔案還是目錄
是檔案是檔案判斷是否含有java,有則列印
是目錄則再次呼叫這個filterDir(File file,String filter)方法。
程式碼演示
import java.io.File; import java.io.FilenameFilter; /* * 搜尋資料夾中含有‘java‘的檔名稱並打印出來 * */ public class FileTest1 { public static void main(String[] args) { searchFile("C:\\Users\\ccc\\Desktop\\IO流","java"); } public static void searchFile(String path,String filter) { //傳入引數String path,String filter,path是路徑,filter相當於過濾紙 File file = new File(path); if (!file.exists()) { //無效的路徑 System.out.println("無效的路徑"); return; } if (file.isFile()) { //是檔案 if(file.getName().contains(filter)){ //判斷是否含有“java”,有則列印 System.out.println(file.getAbsolutePath()); } }else{ //是目錄 filterDir(file,filter); } } private static void filterDir(File file,String filter) { File[] files = file.listFiles(new FilenameFilter() { @Override //把資料夾中的隱藏檔案過濾掉 public boolean accept(File dir, String name) { if(name.startsWith(".")){ return false; }else return true; } }); for(File i: files){ if (i.isFile()) { //是檔案 if(i.getName().contains(filter)){ System.out.println(i.getAbsolutePath()); } }else{ //是目錄 filterDir(i,filter); } } } }
執行結果
資料夾下本來的目錄為:
C:\Users\ccc\Desktop\IO流\a\a1.java
C:\Users\ccc\Desktop\IO流\a\a2.java
C:\Users\ccc\Desktop\IO流\ccc1\a.txt
C:\Users\ccc\Desktop\IO流\file\java11.txt
C:\Users\ccc\Desktop\IO流\file\java34.txt
C:\Users\ccc\Desktop\IO流\java\a.txt
C:\Users\ccc\Desktop\IO流\java\b.mp4
C:\Users\ccc\Desktop\IO流\java\j1.java