想写一个Java文件管理器,帮我把不知道保存到哪里去了的命运二屏幕截图找出来, 一开始不加“switch — case”语句之前单独测试过,这两个功能都是可以的,但是加了之后就不行了,我实在看不出是什么地方有问题,就只能来请教大家了。
package 文件管理器;
import java.io.File;
import java.io.FilenameFilter;
import java.util.*;
import java.util.Scanner;
public class 文件管理器 {
public static void main(String[] args) {
//输入字符串数据
//System.out.println("想要使用“目标路径 + 后缀名 来查找文件");
//System.out.println("请按“1”");
//System.out.println("想要使用“目标路径 + 关键字 来查找文件");
//System.out.println("请按“2”");
Scanner sc = new Scanner(System.in);
Scanner scanner = new Scanner(System.in);
int Chioce = sc.nextInt();
scanner.nextLine();
switch(Chioce){
case (1):
//按后缀名查找
String inputString_log =sc.nextLine();
String inputString_extendname =sc.nextLine();
指定后缀名检索文件 fileAccept = new 指定后缀名检索文件();
File dir = new File(inputString_log);//文件目录"."是当前文件
//调用方法
fileAccept.setExtendName(inputString_extendname);
String fileName[] = dir.list(fileAccept);
for(String name:fileName) {
System.out.println(name);
System.out.println(dir.getName() + dir.getAbsolutePath());//获得绝对路径
}
break;
case (2):
//按关键词查找
String directoryA =sc.nextLine();//最大的文件的目录
String KeyWord =sc.nextLine();//关键词
//传入数据(一步写成):
List<String> result = 指定关键词检索文件.SearchFile(KeyWord,directoryA);
System.out.println(result);//这里才输出数组
break;
case(5):break;
}
}
}
public class 指定关键词检索文件{
public static List<String> SearchFile(String Keyword,String directory){
List<String> result = new ArrayList<>();//创建String类型数组列表result
File[] files= new File(directory).listFiles();//创建了一个目录文件对象
for(File file:files) {
if(file.isDirectory()){
result.addAll(SearchFile(Keyword,file.getAbsolutePath()));
}
else{
try {
String content = new String(Files.readAllBytes(Paths.get(file.getAbsolutePath())), StandardCharsets.UTF_8);
if(content.contains(Keyword)){
result.add(file.getAbsolutePath());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
}
public class 指定后缀名检索文件 implements FilenameFilter {
private String extendname;
public void setExtendName(String s) {//设置后缀名
extendname = "." + s;
}
public boolean accept(File dir,String name) {
return name.endsWith(extendname);
}
}
case 那里,不要括号啊。
还是不行,具体错误就是这样