1. 程式人生 > 其它 >java-IO流-搜尋含java字元的檔案問題

java-IO流-搜尋含java字元的檔案問題

問題

在指定的檔案件下,搜尋含有‘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