Java知识【File类练习】

目录

File类练习一

File类练习二

File类练习三


File类练习一

  • 案例需求

    在当前模块下的aaa文件夹中创建一个a.txt文件

  • 实现步骤

    • 创建File对象,指向aaa文件夹

    • 判断aaa文件夹是否存在,如果不存在则创建

    • 创建File对象,指向aaa文件夹下的a.txt文件

    • 创建这个文件

  • 代码实现

    public class Test1 {
        public static void main(String[] args) throws IOException {
            //练习一:在当前模块下的aaa文件夹中创建一个a.txt文件
           /* File file = new File("filemodule\\aaa\\a.txt");
            file.createNewFile();*/
            //注意点:文件所在的文件夹必须要存在.
    
          	//1.创建File对象,指向aaa文件夹
            File file = new File("filemodule\\aaa");
          	//2.判断aaa文件夹是否存在,如果不存在则创建
            if(!file.exists()){
                //如果文件夹不存在,就创建出来
                file.mkdirs();
            }
          	//3.创建File对象,指向aaa文件夹下的a.txt文件
            File newFile = new File(file,"a.txt");
          	//4.创建这个文件
            newFile.createNewFile();
        }
    }

File类练习二

  • 案例需求

    删除一个多级文件夹

  • 实现步骤

    • 定义一个方法,接收一个File对象

    • 遍历这个File对象,获取它下边的每个文件和文件夹对象

    • 判断当前遍历到的File对象是文件还是文件夹

    • 如果是文件,直接删除

    • 如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递

    • 参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹

  • 代码实现

    public class Test2 {
        public static void main(String[] args) {
            //练习二:删除一个多级文件夹
            //delete方法
            //只能删除文件和空文件夹.
            //如果现在要删除一个有内容的文件夹?
            //先删掉这个文件夹里面所有的内容.
            //最后再删除这个文件夹
    
            File src = new File("C:\\Users\\apple\\Desktop\\src");
            deleteDir(src);
        }
      
    	//1.定义一个方法,接收一个File对象
        private static void deleteDir(File src) {
            //先删掉这个文件夹里面所有的内容.
            //递归 方法在方法体中自己调用自己.
            //注意: 可以解决所有文件夹和递归相结合的题目
            //2.遍历这个File对象,获取它下边的每个文件和文件夹对象
            File[] files = src.listFiles();
            //3.判断当前遍历到的File对象是文件还是文件夹
            for (File file : files) {
                //4.如果是文件,直接删除
                if(file.isFile()){
                    file.delete();
                }else{
                    //5.如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递
                    deleteDir(file);//参数一定要是src文件夹里面的文件夹File对象
                }
            }
            //6.参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹
            src.delete();
        }
    
    }

File类练习三

案例需求

统计一个文件夹中每种文件的个数并打印

打印格式如下:

	txt:3个

		doc:4个

		jpg:6个

		 …
  • 实现步骤

    • 定义一个方法,参数是HashMap集合用来统计次数和File对象要统计的文件夹

    • 遍历File对象,获取它下边的每一个文件和文件夹对象

    • 判断当前File对象是文件还是文件夹

    • 如果是文件,判断这种类型文件后缀名在HashMap集合中是否出现过

      • 没出现过,将这种类型文件的后缀名存入集合中,次数存1

      • 出现过,获取这种类型文件的后缀名出现的次数,对其+1,在存回集合中

    • 如果是文件夹,递归调用自己,HashMap集合就是参数集合,File对象是当前文件夹对象

  • 代码实现

public class Test3 {
    public static void main(String[] args) {
        //统计一个文件夹中,每种文件出现的次数.
        //统计 --- 定义一个变量用来统计. ---- 弊端:同时只能统计一种文件
        //利用map集合进行数据统计,键 --- 文件后缀名  值 ----  次数

        File file = new File("filemodule");
        HashMap<String, Integer> hm = new HashMap<>();
        getCount(hm, file);
        System.out.println(hm);
    }
  
	//1.定义一个方法,参数是HashMap集合用来统计次数和File对象要统计的文件夹
    private static void getCount(HashMap<String, Integer> hm, File file) {
      	//2.遍历File对象,获取它下边的每一个文件和文件夹对象
        File[] files = file.listFiles();
        for (File f : files) {
          	//3.判断当前File对象是文件还是文件夹
            if(f.isFile()){
              	//如果是文件,判断这种类型文件后缀名在HashMap集合中是否出现过
                String fileName = f.getName();
                String[] fileNameArr = fileName.split("\\.");
                if(fileNameArr.length == 2){
                    String fileEndName = fileNameArr[1];
                    if(hm.containsKey(fileEndName)){
                        //出现过,获取这种类型文件的后缀名出现的次数,对其+1,在存回集合中
                        Integer count = hm.get(fileEndName);
                        //这种文件又出现了一次.
                        count++;
                        //把已经出现的次数给覆盖掉.
                        hm.put(fileEndName,count);
                    }else{
                        // 没出现过,将这种类型文件的后缀名存入集合中,次数存1
                        hm.put(fileEndName,1);
                    }
                }
            }else{
              //如果是文件夹,递归调用自己,HashMap集合就是参数集合,File对象是当前文件夹对象代码实现
                getCount(hm,f);
            }
        }
    }
  
}

猜你喜欢

转载自blog.csdn.net/m0_64550837/article/details/127230446