/*
- 批量操作
- 批量查询
- 需求: 把D:\JavaSE\CodeLibrary文件夹下的所有的 class 结尾的文件输出在控制台
- 思路:
- 1.封装文件路径指向 D:\JavaSE\CodeLibrary
- 2.获取到目录下所有的文件或者文件夹
- 3.遍历每一个文件 或者 文件夹
- 4.判断该 File 是 文件还是文件夹 (if-else)
是文件
判断改文件是否以 .class 结尾 (单if)
是
输出改文件
不是
不处理
是文件夹
重复 第二步
*/
package com.sxt.batchFiledemo;
import java.io.File;
public class BatchFileDemo01 {
public static void main(String[] args) {
// 1.封装文件路径指向 D:\JavaSE\CodeLibrary
File srcFolder = new File("D:\\JavaSE\\CodeLibrary");
getAllClassFile(srcFolder);
}
public static void getAllClassFile(File srcFolder) {
if (srcFolder == null) {
throw new NullPointerException("兄弟,你传的啥文件啊!!!");
}
// 2.获取到目录下所有的文件或者文件夹
File[] files = srcFolder.listFiles();
if (files != null && files.length != 0) {
// 3.遍历每一个文件 或者 文件夹
for (File f : files) {
String fileName = f.getName();
// 4.判断该 File 是 文件还是文件夹 (if-else)
if (f.isDirectory()) {
// 重复 第二步
getAllClassFile(f);
} else {
// 是文件
// 判断改文件是否以 .class 结尾 (单if)
if (fileName.endsWith(".class")) {
System.out.println(fileName);
}
}
}
}
}
}
/*
-
递归删除指定目录下的所有文件
-
注意: 通过命令和代码删除文件是不走回收站的!!!
-
思路:
-
1.封装文件路径指向 D:\a.txt\CodeLibrary
-
2.获取到目录下所有的文件或者文件夹
-
3.遍历每一个文件 或者 文件夹
-
4.判断该 File 是 文件还是文件夹 (if-else)
是文件
删除文件
是文件夹
重复 第二步 -
注意: 如果文件夹中的所有文件都删除了,还记住删除空目录
*/
package com.sxt.batchFiledemo;
import java.io.File;
public class BatchFileDemo02 {
public static void main(String[] args) {
// 1.封装文件路径指向
File srcFile = new File("D:\\a.txt\\CodeLibrary");
deleteFolder(srcFile);
}
public static void deleteFolder(File srcFolder) {
if (srcFolder == null) {
throw new NullPointerException("兄弟,你传的啥文件啊!!!");
}
// 2.获取到目录下所有的文件或者文件夹
File[] files = srcFolder.listFiles();
if (files != null && files.length != 0) {
// 3.遍历每一个文件 或者 文件夹
for (File f : files) {
String fileName = f.getName();
// 4.判断该 File 是 文件还是文件夹 (if-else)
if (f.isDirectory()) {
// 重复 第二步
deleteFolder(f);
} else {
// 是文件
// 删除即可
System.out.println("\t\t" + (f.delete() ? "成功" : "失败") + "删除了" + fileName + "文件!!!");
}
}
}
System.out.println(srcFolder.delete() ? "成功" : "失败" + "删除了" + srcFolder.getName() + "文件夹!!!");
}
}
/*
- 统计视频文件的个数
*/
package com.sxt.batchFiledemo;
import java.io.File;
public class BatchFileDemo03 {
static int count = 0;
public static void main(String[] args) {
// 1.封装文件路径指向
File srcFolder = new File("D:\\CodeLibrary");
getAllMP4File(srcFolder,count);
}
public static int getAllMP4File(File srcFolder, int count) {
if (srcFolder == null) {
throw new NullPointerException("兄弟,你传的啥文件啊!!!");
}
// 2.获取到目录下所有的文件或者文件夹
File[] files = srcFolder.listFiles();
if (files != null && files.length != 0) {
// 3.遍历每一个文件 或者 文件夹
for (File f : files) {
String fileName = f.getName();
// 4.判断该 File 是 文件还是文件夹 (if-else)
if (f.isDirectory()) {
// 重复 第二步
getAllMP4File(f,count);
} else {
// 是文件
// 判断改文件是否以 .MP4 结尾 (单if)
if (fileName.endsWith(".MP4")) {
count ++;
return count;
}
}
}
}
return count;
}
}
/*
- 统计某个文件夹下面MP4文件的个数
*/
package com.sxt.batchFiledemo;
import java.io.File;
public class BatchFileDemo04 {
static int count = 0;
public static void main(String[] args) {
// 1.创建文件路径对象指向
File srcFile = new File("D:\\JavaSE");
System.out.println("视频的个数:" + getAllMp4File(srcFile));
}
public static int getAllMp4File(File srcFile) throws NullPointerException{
if (srcFile == null) {
throw new NullPointerException("源文件不能为null");
}
// 2.获取到文件目录下面所有的文件或者文件夹
File[] files = srcFile.listFiles();
if (files != null && files.length != 0) {
// 3.遍历这个文件或者文件夹目录,获取到每一个文件或者文件夹
for (File f : files) {
// 4.判断该东西是文件还是文件夹(if-else 语句)
if (f.isDirectory()) {
getAllMp4File(f);
} else {
String fileName = f.getName();
// 是文件 判断该文件是否是.mp4文件 (单if语句)
if (fileName.endsWith(".mp4")) {
System.out.println(fileName);
count++;
}
}
}
}
return count;
}
}