pom.xml添加配置信息
commons-io
commons-io
2.4
工具类
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是"/"
/**
* 功能:验证文件夹是否存在
*
* @param filePath 指定的文件夹绝对路径
* @return
*/
public static boolean validateFileDir(String filePath) {
Boolean flag = false;
//判断文件路径是否存在
File fileDir = new File(filePath);
if (fileDir.exists()) {
flag = true;
}
return flag;
}
/**
* 功能:
获取指定目录下的所有文件名(单层,仅文件名称)
* @param filePath 指定的文件夹目录(全路径)
* @return List
*/
public static List getFileNameList(String filePath) {
List fileNamelist = new ArrayList();
// 验证文件夹是否存在
boolean flag = validateFileDir(filePath);
if (flag) {
Collection listFiles = FileUtils.listFiles(new File(filePath), null, false);
for (File file : listFiles) {
fileNamelist.add(file.getName());
}
}
return fileNamelist;
}
/**
* 功能:
获取指定目录下的指定类型的所有文件名(单层,仅文件名称)
* @param filePath 指定的文件目录(全路径)
* @param fileType 文件类型
* @return List
*/
public static List getFileNameList(String filePath, String fileType) {
return getFileNameList(filePath, new String[] {fileType});
}
/**
* 功能:
获取指定目录下的指定类型(可多个)的所有文件名(单层,仅文件名称)
* @param filePath 指定的文件目录(全路径)
* @param fileType 文件类型,数组
* @return List
*/
public static List getFileNameList(String filePath,String[] fileType) {
List fileNamelist = new ArrayList();
// 验证文件夹是否存在
boolean flag = validateFileDir(filePath);
if (flag) {
Collection listFiles = FileUtils.listFiles(new File(filePath), fileType, false);
for (File file : listFiles) {
fileNamelist.add(file.getName());
}
}
return fileNamelist;
}
/**
* 功能:
获取指定目录下的所有目录(多层,全路径)
* @param filePath 指定的目录(全路径)
* @return List
*/
public static List getFolderlList(String filePath) {
List folderllist = new ArrayList();
// 验证文件夹是否存在
boolean flag = validateFileDir(filePath);
if (flag) {
Collection listFilesAndDirs = FileUtils.listFilesAndDirs(
new File(filePath),
new NotFileFilter(TrueFileFilter.INSTANCE),
DirectoryFileFilter.DIRECTORY);
for (File file : listFilesAndDirs) {
folderllist.add(file.getPath());
}
}
return folderllist;
}
/**
* 功能:
获取指定目录下的所有文件名(多层,绝对路径)
* @param filePath 指定文件目录
* @return List
*/
public static List getFileAbsolutePathList(String filePath) {
List fileNamelist = new ArrayList();
// 验证文件夹是否存在
boolean flag = validateFileDir(filePath);
if (flag) {
Collection listFiles = FileUtils.listFiles(new File(filePath), null, true);
for (File file : listFiles) {
fileNamelist.add(file.getPath());
}
}
return fileNamelist;
}
/**
* 功能:
获取指定目录下的指定类型文件的全名称(多层,绝对路径)
* @param filePath 指定文件目录
* @param fileType 文件类型
* @return List
*/
public static List getFileAbsolutePathList(String filePath,String fileType) {
return getFileAbsolutePathList(filePath, new String[] {fileType});
}
/**
* 功能:
获取指定目录下的指定类型(可多个)文件的全名称(多层,绝对路径)
* @param filePath 指定文件目录
* @param fileType 文件类型,数组
* @return List
*/
public static List getFileAbsolutePathList(String filePath,String[] fileType) {
List fileNamelist = new ArrayList();
// 验证文件夹是否存在
boolean flag = validateFileDir(filePath);
if (flag) {
Collection listFiles = FileUtils.listFiles(new File(filePath), fileType, true);
for (File file : listFiles) {
fileNamelist.add(file.getName());
}
}
return fileNamelist;
}
/**
* 功能:
获取指定目录下的所有文件(多层)
* @param filePath 指定文件目录
* @return List
*/
public static List getFileList(String filePath) {
List fileList = new ArrayList();
// 验证文件夹是否存在
boolean flag = validateFileDir(filePath);
if (flag) {
Collection listFiles = FileUtils.listFiles(new File(filePath), null, true);
for (File file : listFiles) {
fileList.add(file);
}
}
return fileList;
}
/**
* 功能:获取指定目录下指定类型的所有文件(多层)
*
* @param filePath
* @param fileType
* @return
*/
public static List getFileList(String filePath, String fileType) {
return getFileList(filePath, new String[] {fileType});
}
/**
* 功能:获取指定目录下指定类型(可多个)的所有文件(多层)
*
* @param filePath
* @param fileType
* @return
*/
public static List getFileList(String filePath, String[] fileType) {
List fileList = new ArrayList();
// 验证文件夹是否存在
boolean flag = validateFileDir(filePath);
if (flag) {
Collection 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;
}
/**
* 功能:删除指定文件
*
* @param delFileName
* @return
*/
public static boolean deleteFile(String delFileName) {
File file = new File(delFileName);
return file.delete();
}
/**
* 功能:删除集合中以指定前缀名开头的文件
*
* @param list 文件名称集合
* @param filePath 指定被删除文件的目录
* @param delFileName 指定被删除的文件名(同名即可,可不同类型)
*/
public static void deleteFile(List 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 fileNameList = getFileNameList(filePath);
for (String fileName : fileNameList) {
System.out.println(fileName);
}
}
}