java如何讀取某個文件夾中的全部文件(包括子文件夾)
java讀取某個文件夾中的全部文件
主要思路
使用file.listFiles()
函數可以獲取到某文件夾下的所有文件信息,如果需要訪問子文件夾下的文件,則需要對獲取到的文件信息進行遞歸遍歷,如果是目錄則繼續統計,如果是文件則加入文件列表中
示例
例如我想讀取該java項目中所有的文件(包括子文件夾中的文件)
則將第十一行的basePath
修改為該文件夾所在路徑,運行結果如下圖所示
代碼
package cn.edu.xjtu; import java.io.File; import java.util.ArrayList; import java.util.List; public class test { public static void main(String[] args) { String basePath = "D:\\code\\java\\typoraImgTypeTrans"; File dir = new File(basePath); List<File> allFileList = new ArrayList<>(); // 判斷文件夾是否存在 if (!dir.exists()) { System.out.println("目錄不存在"); return; } getAllFile(dir, allFileList); for (File file : allFileList) { System.out.println(file.getName()); } System.out.println("該文件夾下共有" + allFileList.size() + "個文件"); } public static void getAllFile(File fileInput, List<File> allFileList) { // 獲取文件列表 File[] fileList = fileInput.listFiles(); assert fileList != null; for (File file : fileList) { if (file.isDirectory()) { // 遞歸處理文件夾 // 如果不想統計子文件夾則可以將下一行註釋掉 getAllFile(file, allFileList); } else { // 如果是文件則將其加入到文件數組中 allFileList.add(file); } } } }
java獲取文件夾下指定的文件
/* * 獲取指定的文件 * */ private ArrayList<String> GetFiles(String path, String searchPattern, ArrayList<String> filesList) { if (filesList == null) { filesList = new ArrayList<>(); } if (!Strings.isNullOrEmpty(path) && !Strings.isNullOrEmpty(searchPattern)) { try { File f = new File(path); if (f.exists()) { final File[] files = f.listFiles(); for (File file : files) { if (file.isDirectory()) { GetFiles(file.getPath(), searchPattern, filesList); } else if (file.isFile()) { if (file.getName().endsWith(searchPattern)) { filesList.add(file.getPath().toString()); } } } } } catch (Exception ex) { System.out.println(ex.getMessage()); } } return filesList; }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。