java 遍歷文件夾內(nèi)文件(包含子文件夾內(nèi)文件)

?記錄一下文件夾下文件的遍歷,可以指定一種或多種文件類型

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;

? ? }

}

————————————————

最后,分享一個博客:一路有你

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容