题目如下
扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问该用户是否要删除该文件
本题是关于文件I/O知识中对文件系统操作的应用,解答的完整代码如下(需要的uu自取)⬇️
在完整代码后博主将对代码进行拆分讲解
import java.io.File;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//输入指定目录
System.out.println("请输入指定目录");
String path = scanner.next();
File file = new File(path);
if(!file.isDirectory()){
System.out.println("输入目录不合法");
System.exit(1);
}
//输入指定字符
System.out.println("请输入指定字符");
String key = scanner.next();
//开始进行扫描
scan(file,key);
}
//扫描函数
public static void scan(File file,String key){
System.out.println("正在扫描"+file.getAbsolutePath());
if(file == null){
return;
} else if(file.isDirectory()){
File[] files = file.listFiles();
for (File f : files ) {
scan(f,key);
}
}else {
if(file.getName().contains(key)){
delete(file);
}
}
}
//删除操作
public static void delete(File file){
System.out.println("是否要删除文件?(y|n)");
Scanner scanner = new Scanner(System.in);
String choice = scanner.next();
if(choice.equals("y")){
file.delete();
}else {
System.out.println("未删除文件");
}
}
}
1、主方法
main()方法代码中,首先要让用户输入指定的目录和指定关键字
值得注意的是,在输入指定目录后,我们要对用户的输入进行合法性判断
if(!file.isDirectory()){
System.out.println("输入目录不合法");
System.exit(1);
}
2、scan方法
为了扫描文件夹及文件夹中的子文件夹, 我们需要采取递归思路。即如果子文件依然是文件夹,就仍用scan方法扫描;如果是文件,则判断文件名包不包含key关键字
如果文件名包含key关键字,那么就进入delete方法,判断是否要删除
public static void scan(File file,String key){
System.out.println("正在扫描"+file.getAbsolutePath());
if(file == null){
return;
} else if(file.isDirectory()){
File[] files = file.listFiles();
for (File f : files ) {
scan(f,key);
}
}else {
if(file.getName().contains(key)){
delete(file);
}
}
}
运行结果