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);
        }
    }
}
相关文章
相关标签/搜索