import org.junit.Test; import java.io.File; import java.util.ArrayList; import java.util.Comparator; import java.util.List; /** * @ClassName T * @Description * @Author 劉志紅 * @Date 28/05/2019 **/ public class T { private List<String> list = new ArrayList<>(300); //獲取文件夾以及其子文件夾下全部文件的全路徑 @Test public void absolutePath() { String path = "D:\\liuzhihong\\study\\批處理"; String regex = ".+\\.swf"; File file = new File(path); getFile(file); //按照文件名天然排序獲得的全路徑 list.stream().filter(x -> x.matches(regex)).sorted(Comparator.comparing(x -> x.substring(x.lastIndexOf("\\") + 1, x.lastIndexOf(".")))).forEach(System.out::println); System.out.println("-------------------------------"); System.out.println("-------------------------------"); System.out.println("-------------------------------"); //按照文件名天然排序獲得的文件名 list.stream().filter(x -> x.matches(regex)).map(x -> x.substring(x.lastIndexOf("\\") + 1, x.lastIndexOf("."))).sorted().forEach(System.out::println); list.clear(); } public void getFile(File file) { if (file != null) { File[] f = file.listFiles(); /*獲取子目錄下的文件*/ if (f != null) { for (int i = 0; i < f.length; i++) { getFile(f[i]); } } else { String absolutePath = file.getAbsolutePath(); list.add(absolutePath); } } } }