JavaScanDisk

Java扫描磁盘文件。默认C盘,遍历所有文件

通过File类实现杀毒软件的扫描功能
要求:
1、通过控制台输入获取需要扫描的目录
提示: 1、全盘扫描 2、指定目录扫描
如果选择1:执行c盘全盘扫描,在控制台打印出当时扫描的文件路径。
如果选择2:提示:请输入扫描路径,并且打印扫描路径
2、但扫描结束后提示:请选择操作:1、继续扫描 2、退出程序
如果选择1: 就回到第一不
如果选择2:就结束程序 System.exit(0);# JavaScanDisk
扫描类:

import java.io.File;
import java.util.Scanner;

/**
 * @ClassName: Scan
 * @Description: 扫描类
 * @author LYL
 * @date 2021-01-11 11:05:44
 */

public class Scan {

	public void allScan(File f) {
		// 将传入的File对象变成File数组
		File[] lf = f.listFiles();
		// 如果为空则结束这次方法。避免空指针异常
		if (lf == null) {
			return;
		}
		// 循环遍历lf中的每个File对象
		for (File f1 : lf) {
			// 如果当前遍历到的这个File对象是文件夹
			if (f1.isDirectory()) {
				// 得到当前文件夹的路径
				String path = f1.getAbsolutePath();
				// 重新调用当前方法,并传入刚刚遍历到的文件夹对象进去
				allScan(new File(path));
				// 如果当前File对象是一个文件
			} else {
				// 输出当前文件的名称
				System.out.println(f1.getName());
				// System.out.println(f1.getAbsolutePath());

			}
		}
		

	}

	/**
	 * @Description:判断是否继续扫描
	 * @author LYL
	 * @date 2021-01-11 13:08:24
	 */
	public void isContinue() {
		System.out.println("请选择操作:1、继续扫描  2、退出程序");
		Scanner sc = new Scanner(System.in);
		int i = sc.nextInt();
		//如果用户输入的是1
		if (i == 1) {			
			//通过Main()方法判断是否重新扫描
			Main main = new Main();
			main.Main();
		} else if (i == 2) {
			//如果输入2则直接退出
			System.exit(0);
		} else {
			//如果不按提示输入则抛出异常
			throw new RuntimeException("请输入所提示的数据!");
		}
		sc.close();
	}

}

用户交互类:

import java.io.File;
import java.util.Scanner;

class Main {

	/**
	 * @Description: 用户交互
	 * @author LYL
	 * @date 2021-01-11 11:00:16
	 */

	public void Main() {
		System.out.println("扫描全盘还是扫描指定路径?1、全盘  2、指定路径");
		Scanner sc = new Scanner(System.in);
		int i = sc.nextInt();
		// 创建Scan对象,以便调用扫描的方法
		Scan scan = new Scan();
		if (i == 1) {
			scan.allScan(new File("c:/"));
			System.out.println("扫描结束");
		} else if (i == 2) {
			System.out.println("请输入指定路径:(格式:'c:/user/xxx')");
                        sc.nextLine();
			String path = sc.nextLine();
			// 将用户输入的路径放入一个新的File对象中
			scan.allScan(new File(path));
			System.out.println("扫描结束");
		} else {
			throw new RuntimeException("请输入所提示的数据!");
		}
		// 结束后判断是否继续
		scan.isContinue();

	}

}

测试类

public class Test {

	/**  
	 * @Description: 测试类
	 * @author LYL
	 * @date 2021-01-11 11:22:40
	 */

	public static void main(String[] args) {
		Main main = new Main();
		main.Main();
	}

}