java文件操做工具類(完善中...)

pom.xml添加配置信息java

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

工具類linux

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.DirectoryFileFilter;
import org.apache.commons.io.filefilter.NotFileFilter;
import org.apache.commons.io.filefilter.TrueFileFilter;

public class ToolFiles {
    private static final String separator = File.separator; // 分隔符,windows是"\",linux是"/"

    /**
     * <h5>功能:驗證文件夾是否存在</h5>
     * 
     * @param filePath 指定的文件夾絕對路徑
     * @return 
     */
    public static boolean validateFileDir(String filePath) {
        Boolean flag = false;
        //判斷文件路徑是否存在
        File fileDir = new File(filePath);
        if (fileDir.exists()) {
            flag = true;
        }
        return flag;
    }

    /**
     * <h5>功能:</h5>獲取指定目錄下的全部文件名(單層,僅文件名稱)
     * @param filePath 指定的文件夾目錄(全路徑)
     * @return List<String>
     */
    public static List<String> getFileNameList(String filePath) {
        List<String> fileNamelist = new ArrayList<String>();
        // 驗證文件夾是否存在
        boolean flag = validateFileDir(filePath);
        if (flag) {
            Collection<File> listFiles = FileUtils.listFiles(new File(filePath), null, false);
            for (File file : listFiles) {
                fileNamelist.add(file.getName());
            }
        }
        return fileNamelist;
    }

    /**
     * <h5>功能:</h5>獲取指定目錄下的指定類型的全部文件名(單層,僅文件名稱)
     * @param filePath 指定的文件目錄(全路徑)
     * @param fileType 文件類型
     * @return List<String>
     */
    public static List<String> getFileNameList(String filePath, String fileType) {
        return getFileNameList(filePath, new String[] {fileType});
    }

    /**
     * <h5>功能:</h5>獲取指定目錄下的指定類型(可多個)的全部文件名(單層,僅文件名稱)
     * @param filePath 指定的文件目錄(全路徑)
     * @param fileType 文件類型,數組
     * @return List<String>
     */
    public static List<String> getFileNameList(String filePath,String[] fileType) {
        List<String> fileNamelist = new ArrayList<String>();
        // 驗證文件夾是否存在
        boolean flag = validateFileDir(filePath);
        if (flag) {
            Collection<File> listFiles = FileUtils.listFiles(new File(filePath), fileType, false);
            for (File file : listFiles) {
                fileNamelist.add(file.getName());
            }
        }
        return fileNamelist;
    }

    /**
     * <h5>功能:</h5>獲取指定目錄下的全部目錄(多層,全路徑)
     * @param filePath 指定的目錄(全路徑)
     * @return List<String>
     */
    public static List<String> getFolderlList(String filePath) {
        List<String> folderllist = new ArrayList<String>();
        // 驗證文件夾是否存在
        boolean flag = validateFileDir(filePath);
        if (flag) {
            Collection<File> listFilesAndDirs = FileUtils.listFilesAndDirs(
                    new File(filePath),
                    new NotFileFilter(TrueFileFilter.INSTANCE), 
                    DirectoryFileFilter.DIRECTORY);
            for (File file : listFilesAndDirs) {
                folderllist.add(file.getPath());
            }
        }
        return folderllist;
    }

    /**
     * <h5>功能:</h5>獲取指定目錄下的全部文件名(多層,絕對路徑)
     * @param filePath 指定文件目錄
     * @return List<String>
     */
    public static List<String> getFileAbsolutePathList(String filePath) {
        List<String> fileNamelist = new ArrayList<String>();
        // 驗證文件夾是否存在
        boolean flag = validateFileDir(filePath);
        if (flag) {
            Collection<File> listFiles = FileUtils.listFiles(new File(filePath), null, true);
            for (File file : listFiles) {
                fileNamelist.add(file.getPath());
            }
        }
        return fileNamelist;
    }

    /**
     * <h5>功能:</h5>獲取指定目錄下的指定類型文件的全名稱(多層,絕對路徑)
     * @param filePath 指定文件目錄
     * @param fileType 文件類型
     * @return List<String>
     */
    public static List<String> getFileAbsolutePathList(String filePath,String fileType) {
        return getFileAbsolutePathList(filePath, new String[] {fileType});
    }

    /**
     * <h5>功能:</h5>獲取指定目錄下的指定類型(可多個)文件的全名稱(多層,絕對路徑)
     * @param filePath 指定文件目錄
     * @param fileType 文件類型,數組
     * @return List<String>
     */
    public static List<String> getFileAbsolutePathList(String filePath,String[] fileType) {
        List<String> fileNamelist = new ArrayList<String>();
        // 驗證文件夾是否存在
        boolean flag = validateFileDir(filePath);
        if (flag) {
            Collection<File> listFiles = FileUtils.listFiles(new File(filePath), fileType, true);
            for (File file : listFiles) {
                fileNamelist.add(file.getName());
            }
        }
        return fileNamelist;
    }

    /**
     * <h5>功能:</h5>獲取指定目錄下的全部文件(多層)
     * @param filePath 指定文件目錄
     * @return List<File>
     */
    public static List<File> getFileList(String filePath) {
        List<File> fileList = new ArrayList<File>();
        // 驗證文件夾是否存在
        boolean flag = validateFileDir(filePath);
        if (flag) {
            Collection<File> listFiles = FileUtils.listFiles(new File(filePath), null, true);
            for (File file : listFiles) {
                fileList.add(file);
            }
        }
        return fileList;
    }

    /**
     * <h5>功能:獲取指定目錄下指定類型的全部文件(多層)</h5>
     * 
     * @param filePath
     * @param fileType
     * @return 
     */
    public static List<File> getFileList(String filePath, String fileType) {
        return getFileList(filePath, new String[] {fileType});
    }

    /**
     * <h5>功能:獲取指定目錄下指定類型(可多個)的全部文件(多層)</h5>
     * 
     * @param filePath
     * @param fileType
     * @return 
     */
    public static List<File> getFileList(String filePath, String[] fileType) {
        List<File> fileList = new ArrayList<File>();
        // 驗證文件夾是否存在
        boolean flag = validateFileDir(filePath);
        if (flag) {
            Collection<File> listFiles = FileUtils.listFiles(new File(filePath), fileType, true);
            for (File file : listFiles) {
                fileList.add(file);
            }
        }
        return fileList;
    }

    /**
     * 經過文件完整路徑直接修改文件名
     * @param filePath 須要修改的文件的完整路徑
     * @param newFileName 須要修改的文件的名稱
     * @return
     */
    public static String FixFileName(String filePath, String newFileName) {
        File oldFile = new File(filePath);
        if (!oldFile.exists()) { // 判斷原文件是否存在
            return null;
        }
        newFileName = newFileName.trim();
        if ("".equals(newFileName) || newFileName == null) // 文件名不能爲空
            return null;

        String newFilePath = null;
        if (oldFile.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 newFile = new File(newFilePath);
        if (!oldFile.exists()) { // 判斷須要修改成的文件是否存在(防止文件名衝突)
            return null;
        }

        try {
            oldFile.renameTo(newFile); // 修改文件名
        } catch(Exception err) {
            err.printStackTrace();
            return null;
        }
        return newFilePath;
    }

    /**
     * <h5>功能:刪除指定文件</h5>
     * 
     * @param delFileName
     * @return 
     */
    public static boolean deleteFile(String delFileName) {
        File file = new File(delFileName);
        return file.delete();
    }

    /**
     * <h5>功能:刪除集合中以指定前綴名開頭的文件</h5>
     * 
     * @param list 文件名稱集合
     * @param filePath 指定被刪除文件的目錄
     * @param delFileName 指定被刪除的文件名(同名便可,可不一樣類型)
     */
    public static void deleteFile(List<File> list, String filePath ,String delFileName) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getName().startsWith(delFileName)) {
                deleteFile(filePath + list.get(i).getName());
                break;
            }
        }
    }

    public static void main(String[] args) {
        String filePath = "e:\\";
        List<String> fileNameList = getFileNameList(filePath);
        for (String fileName : fileNameList) {
            System.out.println(fileName);
        }
    }
}
相關文章
相關標籤/搜索