一、使用File文件工具类对指定类型文件进行筛选
1、使用File文件工具类进行文件指定类型文件筛选
2、使用io流对文件进行copy
3、使用序列化与反序列化对对象进行存储及复原
- 我们要筛选指定类型的文件,首先得将筛选的文件和指定的类型以参数的形式传入筛选方法中;
/**
* 1、使用File文件工具类进行文件指定类型文件筛选
* @param fileDirectory 筛选文件
* @param type 指定类型
*/
public void selectFile(File fileDirectory, String type) {
...
}
- 先判断传入的 File 是否为空,再判断传入的 File 是否为文件夹;
// 判断文件是否存在
if (fileDirectory.exists()) {
// 如果文件存在,判断是否是文件夹
if (fileDirectory.isDirectory()) {
// 如果为文件夹
...
} else {
// 如果为文件
...
}
} else {
// 如果文件不存在
...
}
- 如果传入文件不存在,则直接输出“该文件不存在!”;
// 判断文件是否存在
if (fileDirectory.exists()) {
// 如果文件存在,判断是否是文件夹
if (fileDirectory.isDirectory()) {
// 如果为文件夹
...
} else {
// 如果为文件
...
}else {
// 如果文件不存在
System.out.println("该文件不存在!");
}
- 若传入文件存在且类型为文件,则直接判断该文件是否为指定类型;(若指定类型为 txt 文件,由于可能存在 aaa.txt.bat 类型的文件,所以不能使用 String 中的 contains() 方法,故使用 Spring 中的 split() 方法以“.” 进行分割,取最后一位即该文件后缀);
// java.lang.string split 以点分割字符串时需注意
// 错误的做法
String fileDirectory="aaa.txt.bat";
String[] s=ip.split(".");//这种方式无法拆分字符串
// 正确的做法
String fileDirectory="aaa.txt.bat";
String[] s=ip.split("\\.");
if (fileDirectory.exists()) {
// 如果文件存在,判断是否是文件夹
if (fileDirectory.isDirectory()) {
// 如果为文件夹
...
} else {
// 如果为文件,以“.”分割文件名
String[] split = fileDirectory.getName().split("\\.");
// 获取指定类型的文件
if (split[split.length-1].equals(type)) {
System.out.println(fileDirectory.getAbsolutePath());
}
}else {
// 如果文件不存在
System.out.println("该文件不存在!");
}
- 若传入文件存在且类型为文件夹,则遍历文件夹中内容,若内部文件为文件,则判断是否为指定类型;
if (fileDirectory.exists()) {
// 如果文件存在,判断是否是文件夹
if (fileDirectory.isDirectory()) {
// 如果是文件夹,遍历全部文件
File[] arrFile = fileDirectory.listFiles();
for (File file:arrFile) {
// 再次判断是否是文件夹
if (!file.isDirectory()) {
// 如果是文件,以“.”分割文件名
String[] split = file.getName().split("\\.");
// 获取指定类型的文件
if (split[split.length-1].equals(type)) {
System.out.println(file.getAbsolutePath() + "---" + file.getName());
}
} else {
// 如果是文件夹
...
}
}
} else {
// 如果为文件,以“.”分割文件名
String[] split = fileDirectory.getName().split("\\.");
// 获取指定类型的文件
if (split[split.length-1].equals(type)) {
System.out.println(fileDirectory.getAbsolutePath());
}
}else {
// 如果文件不存在
System.out.println("该文件不存在!");
}
- 若内部文件为文件夹,则递归调用本方法继续遍历;
if (fileDirectory.exists()) {
// 如果文件存在,判断是否是文件夹
if (fileDirectory.isDirectory()) {
// 如果是文件夹,遍历全部文件
File[] arrFile = fileDirectory.listFiles();
for (File file:arrFile) {
// 再次判断是否是文件夹
if (!file.isDirectory()) {
// 如果是文件,以“.”分割文件名
String[] split = file.getName().split("\\.");
// 获取指定类型的文件
if (split[split.length-1].equals(type)) {
System.out.println(file.getAbsolutePath() + "---" + file.getName());
}
} else {
// 如果是文件夹,递归
selectFile(file,type);
}
}
} else {
// 如果为文件,以“.”分割文件名
String[] split = fileDirectory.getName().split("\\.");
// 获取指定类型的文件
if (split[split.length-1].equals(type)) {
System.out.println(fileDirectory.getAbsolutePath());
}
}else {
// 如果文件不存在
System.out.println("该文件不存在!");
}
- 完整代码;
1、使用File文件工具类进行文件指定类型文件筛选
2、使用io流对文件进行copy
3、使用序列化与反序列化对对象进行存储及复原
/**
* 1、使用File文件工具类进行文件指定类型文件筛选
* 2、使用io流对文件进行copy
* 3、使用序列化与反序列化对对象进行存储及复原
*/
public class FileUtil {
/**
* 1、使用File文件工具类进行文件指定类型文件筛选
* @param fileDirectory 文件
* @param type 指定类型
*/
public void selectFile(File fileDirectory, String type) {
// 判断文件是否存在
if (fileDirectory.exists()) {
// 如果文件存在,判断是否是文件夹
if (fileDirectory.isDirectory()) {
// 如果是文件夹,遍历全部文件
File[] arrFile = fileDirectory.listFiles();
for (File file:arrFile) {
// 再次判断是否是文件夹
if (!file.isDirectory()) {
// 如果不是文件夹,以“.”分割文件名
String[] split = file.getName().split("\\.");
// 获取指定类型的文件
if (split[split.length-1].equals(type)) {
System.out.println(file.getAbsolutePath() + "---" + file.getName());
}
} else {
// 如果是文件夹,递归
selectFile(file,type);
}
}
} else {
// 如果是文件
String[] split = fileDirectory.getName().split(".");
// 获取指定类型的文件
if (split[split.length-1].equals(type)) {
System.out.println(fileDirectory.getAbsolutePath());
}
}
} else {
// 如果文件不存在
System.out.println("该文件不存在!");
}
}
}