亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲取具有指定擴展名并排除少數目錄的文件列表?

如何獲取具有指定擴展名并排除少數目錄的文件列表?

小唯快跑啊 2022-06-04 17:24:55
我需要從不包括幾個子目錄的目錄中列出文件(指定的擴展名)。我可以使用擴展名進行過濾,但不能使用兩個條件 1)文件應按擴展名過濾 2)應排除少數子目錄    File dir = new File("D:\\SomeDir");    String[] extensions = new String[] { "txt", "java" };    List<File> files = (List<File>) FileUtils.listFiles(dir, extensions, true);    for (File file : files) {        System.out.println("file: " + file.getCanonicalPath());    }如何排除選定的子目錄?
查看完整描述

2 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

試試這個代碼:


// for exlude file extension  

NotFileFilter suffixFileFilterFileFilter=new NotFileFilter(new 

SuffixFileFilter(new String[] { "txt", "java" }));  


//to include only selected extension use below one

//IOFileFilter suffixFileFilterFileFilter= new SuffixFileFilter(new String[] { "java", "txt" });


NotFileFilter directoryFileFilterFileFilter=new NotFileFilter(new 

PrefixFileFilter(new String[] { "tolearn", "dir2" }));   // for directory

File dir = new File("D:\\SomeDir");

List<File> fileList  = (List<File>)  FileUtils.listFiles(dir,suffixFileFilterFileFilter,directoryFileFilterFileFilter);

    for (File file : fileList) {

        System.out.println("file: " + file.getCanonicalPath());

    }


查看完整回答
反對 回復 2022-06-04
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

干得好


public static void main(String[] args) throws IOException {

    File dir = new File("C:\\Users\\cosmap\\Documents\\travel-expenses");

    List<String> excludedDirs = Arrays.asList("src", ".git");

    List<String> extensions = Arrays.asList("xml", "yml");


    listFiles(dir, excludedDirs, extensions).forEach(System.out::println);

}


public static List<File> listFiles(File currentFile, List<String> excludedDirs, List<String> extensions) {

    List<File> out = new ArrayList<>();

    File[] files = currentFile.listFiles();


    // might be null

    if(files == null) {

        return out;

    }


    for (File file : files) {

        // add recursively only if is directory and not in the excluded list

        if(file.isDirectory() && !excludedDirs.contains(file.getName())) {

            out.addAll(listFiles(file, excludedDirs, extensions));

        // add if is file and in the allowed extensions list

        } else if (file.isFile() && extensions.contains(file.getName().substring(file.getName().lastIndexOf('.') + 1))) {

            out.add(file);

        }

    }


    return out;

}


查看完整回答
反對 回復 2022-06-04
  • 2 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號