java之io之File類的list()方法過濾目錄的使用


java的io的知識中,File類必須掌握。File類是對文件或者文件夾的封裝。它本身並不能對所封裝的文件進行讀寫,它封裝的只是文件或文件夾的周邊知識,比如 大小啦,創建日期啦,路徑啦等等。

如果File封裝的文件夾,File類的list()方法可以將此文件夾下的所有文件夾和文件已字符串數組的形式返回。

list(FilenameFilter)可以對返回的字符串數組進行過濾,取自己想要的字符串。

?打印文件夾下的.java文件

實現1

package com.westward.io;

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;

public class ListFileDemo {
    public static void main(String[] args) {
        File file= new File("..");
        listFileJava(file);
    }
    
    public static void listFileJava(File file){
        for (String string : file.list(new DirFilter(".*\\.java"))) {
            System.out.println(string);
        }
        
    }
}

class DirFilter implements FilenameFilter{
    private Pattern pattern;
    public DirFilter(String regex) {
        // TODO Auto-generated constructor stub
        pattern= Pattern.compile(regex);
    }
    @Override
    public boolean accept(File dir, String name) {
        // TODO Auto-generated method stub
        return pattern.matcher(name).matches();
    }
    
}

實現2  匿名內部類的形式

package com.westward.io;

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;

public class ListFileDemo2 {
    public static void main(String[] args) {
        File file= new File("..");
        final String regex= ".*\\.java";
        String[] files= file.list(new FilenameFilter() {
            private Pattern pattern= Pattern.compile(regex);
            @Override
            public boolean accept(File dir, String name) {
                return pattern.matcher(name).matches();
            }
        });
        for (String string : files) {
            System.out.println(string);
        }
    }
}

output:
Demo.java
hha.java
ln.java

注意:

匿名內部類若 需要訪問外部方法的局部變量,那么局部變量必須被 final 所修飾。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM