?記錄一下文件夾下文件的遍歷格嘁,可以指定一種或多種文件類型
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class TraversalFiles {
? ? public static void main(String[] args) {
? ? ? ? TraversalFiles tf = new TraversalFiles();
//? ? ? ? List<File> files = tf.getFiles("E:\\");
? ? ? ? List<File> files = tf.getFiles("E:\\",".json");
//? ? ? ? List<File> files = tf.getFiles("E:\\",".json",".txt");
? ? }
? ? /**
? ? *
? ? * @param path 文件夾路徑
? ? * @param exts 文件后綴名,例如:一個".json"或多個".json",".txt"...陕靠,不填則返回所有類型的文件
? ? * @return 返回文件列表
? ? */
? ? public List<File> getFiles(String path, String... exts) {
? ? ? ? List<File> filesList = new ArrayList<>();
? ? ? ? File file = new File(path);
? ? ? ? LinkedList<File> list = new LinkedList<>();
? ? ? ? //判斷文件夾是否存在
? ? ? ? if (file.exists()&&file.isDirectory()) {
? ? ? ? ? ? //判斷文件夾內(nèi)是否有文件
? ? ? ? ? ? if (null == file.listFiles()) {
? ? ? ? ? ? ? ? return filesList;
? ? ? ? ? ? }
? ? ? ? ? ? list.addAll(Arrays.asList(file.listFiles()));
? ? ? ? ? ? while (!list.isEmpty()) {
? ? ? ? ? ? ? ? //獲取第一個元素
? ? ? ? ? ? ? ? File firstFile = list.removeFirst();
? ? ? ? ? ? ? ? //判斷第一個元素是否為文件夾
? ? ? ? ? ? ? ? if(firstFile.isDirectory()){
? ? ? ? ? ? ? ? ? ? //獲取文件夾內(nèi)文件
? ? ? ? ? ? ? ? ? ? File[] files = firstFile.listFiles();
? ? ? ? ? ? ? ? ? ? if (null == files) {
? ? ? ? ? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? for (File f : files) {
? ? ? ? ? ? ? ? ? ? ? ? if (f.isDirectory()) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? list.add(f);
? ? ? ? ? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(null != exts){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(isExit(f.getName(),exts)){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? filesList.add(f);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? filesList.add(f);
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? if(null != exts){
? ? ? ? ? ? ? ? ? ? ? ? if(isExit(firstFile.getName(),exts)){
? ? ? ? ? ? ? ? ? ? ? ? ? ? filesList.add(firstFile);
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? filesList.add(firstFile);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? } else {
? ? ? ? ? ? System.out.println("文件不存在!");
? ? ? ? }
? ? ? ? return filesList;
? ? }
? ? /**
? ? * <p>
? ? *? ? 判斷文件是否存在
? ? * </p>
? ? * @param fileName 文件名
? ? * @param exts 文件類型
? ? * @return
? ? */
? ? private boolean isExit(String fileName,String... exts){
? ? ? ? if(null != exts){
? ? ? ? ? ? for(int i = 0; i < exts.length; i++){
? ? ? ? ? ? ? ? if(fileName.toLowerCase().endsWith(exts[i].toLowerCase())){
? ? ? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return false;
? ? }
}
————————————————
最后,分享一個博客:一路有你