荥阳网站建设,湖北省建设局网站首页,网站运营指标,泉州百度开户对于通过java对文件继续读取和写入的操作推荐看读取文件和写入文件操作
题目 扫描指定目录中的文件#xff0c;并找到名称中包含指定字符的所有普通文件#xff08;不包括目录#xff09;#xff0c;并后续询问用户是否要删除该文件
题目分析 实际上题目就要求我们对一个…对于通过java对文件继续读取和写入的操作推荐看读取文件和写入文件操作
题目 扫描指定目录中的文件并找到名称中包含指定字符的所有普通文件不包括目录并后续询问用户是否要删除该文件
题目分析 实际上题目就要求我们对一个指定的目录下的文件进行遍历并找出文件名称中带有指定字符的普通文件并询问用户是否需要删除该文件
代码展示
package 文件操作;import java.io.File;
import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: wuyulin* Date: 2023-08-07* Time: 11:23*///文件操作练习
//扫描指定目录并找到名称中包含指定字符的所有普通文件不包括目录并后续询问用户是否要删除该文件
public class Demo5 {private static Scanner scannernew Scanner(System.in);public static void main(String[] args) {System.out.print(请输入要进行查找的根目录路径);//将用户输入的根目录地址作为参数实例化一个File类型的对象File rootDirnew File(scanner.next());if(!rootDir.isDirectory()){System.out.println(输入的路径不是一个合法目录);return;}System.out.print(请输入要删除的文件的关键字);String wordscanner.next();//开始遍历目录中的数据recurDir(rootDir,word);}//通过深度优先遍历去递归遍历完目录中的数据private static void recurDir(File rootDir,String word){//通过listFiles方法获得rootDir根目录下的所有文件File[] filesrootDir.listFiles();//当目录是非法的目录或是空的目录就直接returnif(filesnull||files.length0){return;}for(File f:files){//打印每一个遍历到的文件的路径进行监视System.out.println(f.getAbsolutePath());//当前遍历到的这个文件是目录的话就要递归进入这个目录去遍历该目录中的内容if(f.isDirectory()){recurDir(f,word);}else { //当前遍历到的文件是普通文件就要判断是否含有关键词是否需要删除deleteFile(f,word);}}}private static void deleteFile(File file,String word){if(!file.getName().contains(word)){return;}System.out.println(找到了file.getAbsolutePath()文件是否需要删除Y/N);String choicescanner.next();//choice是一个String类型的对象所以choice是一个引用指向String对象所在内存空间的地址//所以String类型的对象进行比较要使用equalsif(choice.equals(y)||choice.equals(Y)){file.delete();}}
}1首先对于指定目录下文件的遍历采用的是深度优先遍历的思想当我们遍历文件的时候要是遇到的是普通的文件就判断名称是否含有指定字符要是遇到目录就要进行递归进入目录中遍历该目录中的文件继续进行相同的操作 2.通过目录对象调用listFiles方法可以获得该目录下所有的文件将其存入文件数组中遍历文件数组中的每一个文件当该文件是目录那么就要进行递归进入该目录中进行相同的操作要是该文件是普通文件就要进行判断询问用户删除等操作 3.在deleteFile方法中通过file.getName().contains(word)获得文件的名称并判断文件名称中是否含有指定字符word 4.当判断用户输入的时候由于choice是String类型是对象所以choice只是一个引用地址所以不能直接用来判断是否相等要通过调用equals方法才能判断值是否相等。