Java 文件的批量操作----遍历查询文件、删除文件(超详细版)

/*

  • 批量操作
  • 批量查询
  • 需求: 把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;
	}
}

你可能感兴趣的:(Java)