File工具类查找
1.普通的简单查找(只查找当前文件夹,不涉及子文件夹)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件路径:");
String lj = sc.nextLine();
System.out.println("请输入查找的内容:");
String word = sc.nextLine();
File f = new File(lj);
if(f.exists()){ //判断是否存在
if(f.isDirectory()){ //检查是否是文件夹
File[] fd = f.listFiles(); //如果是文件夹遍历文件夹里面的文件,判断是否含有关键字
for(File subF:fd){
if(subF.getName().contains(word)){
System.out.println(subF.getAbsolutePath()+"文件夹");
}
}
}else{ //剩下的是文件
if(f.getName().contains(word)){
System.out.println(f.getAbsolutePath()+"文件");
}
}
}else {
System.out.println("没有该文件");
}
}
结果:
2.使用递归查找(****)
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件路径:");
String lj = sc.nextLine();
File file = new File(lj);
System.out.println("请输入查找的内容:");
String word = sc.nextLine();
fetchByKeyWords(file,word);
}
public static void fetchByKeyWords(File file,String word){
if(file.exists()){
if(file.isDirectory()){
if(file.getName().contains(word)){ //每次递归判断的
System.out.println(file.getAbsolutePath()+"文件夹");
}
//递归
File[] fd = file.listFiles(); //如果是文件夹遍历文件夹里面的文件,判断是否含有关键字
for(File subF:fd){
fetchByKeyWords(subF, word);
}
}else{ //剩下的是文件
if(file.getName().contains(word)){
System.out.println(file.getAbsolutePath()+"文件");
}
}
}else {
System.out.println("没有该文件");
}
}
结果为:
3.使用文件过滤器
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件路径:");
String lj = sc.nextLine();
File file = new File(lj);
System.out.println("请输入查找的内容:");
String word = sc.nextLine();
fetchByKeyWords(file,word);
}
public static void fetchByKeyWords(File file,String word){
if(file.exists()){
if(file.isDirectory()){
if(file.getName().contains(word)){ //每次递归判断的
System.out.println(file.getAbsolutePath()+("文件夹"));
}
//递归
File[] fd = file.listFiles(new FileFilter() { //文件过滤
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory()){
return true;
}else{
if(file.getName().contains(word)){
return true;
}else{
return false;
}
}
}
});
for(File subF:fd){
fetchByKeyWords(subF,word);
}
}else{
if(file.getName().contains(word)){
System.out.println(file.getAbsolutePath()+"文件");
}
}
}else {
System.out.println("没有该文件");
}
}
结果为: