FilesNameUtil獲取檔名稱工具類
阿新 • • 發佈:2018-12-18
借鑑網路資料整理而成
import java.io.File; import java.util.ArrayList; import java.util.List; public class FilesNameUtil { private static final String separator = File.separator; // 分隔符,windows是"\",linux是"/" public static void main(String[] args) { String filePath = "G:/測試"; // 檔案路徑 String fileType = "xls"; // 檔案型別 // System.err.println(getFileNameList(filePath)); // 獲取指定路徑下的所有檔名(單層) // System.err.println(getFileNameList(filePath, fileType)); // 獲取指定路徑下的指定型別的所有檔名(單層) // System.err.println(getFolderlList(filePath, null)); // 獲取指定目錄下的所有目錄(多層,全路徑) // System.err.println(getFileList(filePath, null)); // 獲取指定路徑下的所有檔案(多層) // // System.err.println(getFileAbsolutePathList(filePath, null)); // 獲取指定路徑下的所有檔名(多層,絕對路徑) System.err.println(getFileAbsolutePathList(filePath, fileType, null)); // 獲取指定路徑下的所有指定型別檔案的全名稱(多層,絕對路徑) } /** * <h5>功能:</h5>獲取指定路徑下的所有檔名(單層) * @param filePath 檔案路徑(全路徑) * @return List<String> */ public static List<String> getFileNameList(String filePath) { List<String> fileNamelist = new ArrayList<String>(); File dir = new File(filePath); File[] files = dir.listFiles(); // 該檔案目錄下檔案全部放入陣列 if (files != null) { for (int i = 0; i < files.length; i++) { String fileName = files[i].getName(); // 獲取檔名 if (files[i].isDirectory() == false) { // 判斷是檔案還是資料夾 System.out.println(fileName); fileNamelist.add(fileName); } } } return fileNamelist; } /** * <h5>功能:</h5>獲取指定路徑下的指定型別的所有檔名(單層) * @param filePath 檔案路徑(全路徑) * @param fileType 檔案型別 * @return List<String> */ public static List<String> getFileNameList(String filePath,String fileType) { List<String> fileNamelist = new ArrayList<String>(); File dir = new File(filePath); File[] files = dir.listFiles(); // 該檔案目錄下檔案全部放入陣列 if (files != null) { for (int i = 0; i < files.length; i++) { String fileName = files[i].getName(); // 獲取檔名 // 判斷是檔案還是資料夾,並且是否是指定型別的檔案 if (files[i].isDirectory() == false && fileName.endsWith(fileType)) { System.out.println(fileName); fileNamelist.add(fileName); } } } return fileNamelist; } /** * <h5>功能:</h5>獲取指定目錄下的所有目錄(多層,全路徑) * @param filePath * @param filelist * @return List<String> */ public static List<String> getFolderlList(String filePath,List<String> folderllist) { if (null == folderllist) { folderllist = new ArrayList<String>(); } File dir = new File(filePath); File[] files = dir.listFiles(); // 該檔案目錄下檔案全部放入陣列 if (files != null) { for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { // 判斷是檔案還是資料夾 String fileAbsolutePath = files[i].getAbsolutePath(); System.out.println("---" + fileAbsolutePath); folderllist.add(fileAbsolutePath); getFolderlList(fileAbsolutePath,folderllist); // 獲取檔案絕對路徑 } } } return folderllist; } /** * <h5>功能:</h5>獲取指定路徑下的所有檔案(多層) * @param filePath 指定檔案路徑 * @return List<File> */ public static List<File> getFileList(String filePath,List<File> filelist) { if (null == filelist) { filelist = new ArrayList<File>(); } File dir = new File(filePath); File[] files = dir.listFiles(); // 該檔案目錄下檔案全部放入陣列 if (files != null) { for (int i = 0; i < files.length; i++) { String fileAbsolutePath = files[i].getAbsolutePath(); // 獲取檔案絕對路徑 if (files[i].isDirectory()) { // 判斷是檔案還是資料夾 getFileList(fileAbsolutePath,filelist); } else { System.out.println("---" + fileAbsolutePath); filelist.add(files[i]); } } } return filelist; } /** * <h5>功能:</h5>獲取指定路徑下的所有檔名(多層,絕對路徑) * @param filePath 指定檔案路徑 * @return List<String> */ public static List<String> getFileAbsolutePathList(String filePath,List<String> filelist) { if (null == filelist) { filelist = new ArrayList<String>(); } File dir = new File(filePath); File[] files = dir.listFiles(); // 該檔案目錄下檔案全部放入陣列 if (files != null) { for (int i = 0; i < files.length; i++) { String fileAbsolutePath = files[i].getAbsolutePath(); // 獲取檔案絕對路徑 if (files[i].isDirectory()) { // 判斷是檔案還是資料夾 getFileAbsolutePathList(fileAbsolutePath,filelist); } else { System.out.println("---" + fileAbsolutePath); filelist.add(fileAbsolutePath); } } } return filelist; } /** * <h5>功能:</h5>獲取指定路徑下的所有指定型別檔案的全名稱(多層,絕對路徑) * @param filePath 指定檔案路徑 * @param fileType 檔案型別 * @param filelist 用來存放資料的集合 * @return List<String> */ public static List<String> getFileAbsolutePathList(String filePath,String fileType,List<String> filelist) { if (null == filelist) { filelist = new ArrayList<String>(); } File dir = new File(filePath); File[] files = dir.listFiles(); // 該檔案目錄下檔案全部放入陣列 if (files != null) { for (int i = 0; i < files.length; i++) { String fileName = files[i].getName(); // 獲取檔名 String fileAbsolutePath = files[i].getAbsolutePath(); // 獲取檔案絕對路徑 if (files[i].isDirectory()) { // 判斷是檔案還是資料夾 getFileAbsolutePathList(fileAbsolutePath,fileType,filelist); // 獲取檔案絕對路徑 } else if (fileName.endsWith(fileType)) { System.out.println("---" + fileAbsolutePath); filelist.add(fileAbsolutePath); } } } return filelist; } /** * 通過檔案路徑直接修改檔名 * @param filePath 需要修改的檔案的完整路徑 * @param newFileName 需要修改的檔案的名稱 * @return */ public static String FixFileName(String filePath, String newFileName) { File f = new File(filePath); if (!f.exists()) { // 判斷原檔案是否存在 return null; } newFileName = newFileName.trim(); if ("".equals(newFileName) || newFileName == null) // 檔名不能為空 return null; String newFilePath = null; if (f.isDirectory()) { // 判斷是否為資料夾 newFilePath = filePath.substring(0, filePath.lastIndexOf(separator)) + separator + newFileName; } else { newFilePath = filePath.substring(0, filePath.lastIndexOf(separator))+ separator + newFileName + filePath.substring(filePath.lastIndexOf(".")); } File nf = new File(newFilePath); if (!f.exists()) { // 判斷需要修改為的檔案是否存在(防止檔名衝突) return null; } try { f.renameTo(nf); // 修改檔名 } catch(Exception err) { err.printStackTrace(); return null; } return newFilePath; } }