Fork me on GitHub

IO流-----File

一,File

  File是什么?

         1.在读写文件时告诉虚拟机要操作的(文件夹或文件)在哪

         2.对(文件夹或文件)本身进行操作,包括创建和删除等。。。

   File:它是文件和目录名的抽象表示,文件和目录名可以通过File封装成对象,File封装的对象仅仅是一个路径名,它是存在的也可以是不存在的。

 

 

    FIle的创建功能

 

 

 

    File的删除功能:delete() (删除后不走回收站),只能删除空文件夹或文件。

   

       File的判断和获取功能

 

         

 

      File累的高级获取功能:listFiles() :返回此抽象路径名表示的目录中的文件和目录File对象数组(包括隐藏文件和文件夹)    

          注意事项:1.当调用者是一个文件时返回NUll

                            2.当调用者不存在时返回null

                            3.当调用者是空文夹,返回一个长度为0的数组

                            4.当调用者是一个有内容的文件夹时,将里面所有文件夹和文件的路径放入在File数组中返回

    练习:

           1.删除多级文件夹

package com.guncun.io;

import java.io.File;
//删除多级文件夹
public class FilePractice {
    public static void main(String[] args) {
        File file = new File("C:\\Users\\Administrator\\Desktop\\test");
        deledir(file);
    }

    private static void deledir(File file) {
        File[] files = file.listFiles();
        for (File file1 : files) {//遍历得到里面的每一个文件和文件夹的File对象
                  if (file1.isFile()){//判断是否为文件,是直接删除
                      file1.delete();
                  }else {
                      deledir(file1);//递归
                 }
        }
        //最后删除这个文件夹
        file.delete();
    }
}

               2.统计文件夹中,每中文件出现的次数

package com.guncun.io;

import java.io.File;
import java.util.Arrays;
import java.util.HashMap;

//统计文件夹中,每中文件出现的次数
public class FilePractice2 {
    public static void main(String[] args) {
        File file = new File("E:/java/io/io_file");
        HashMap<String,Integer> hashMap = new HashMap<>();
        selectkind(hashMap,file).forEach((key,value)->{
            System.out.println(key+"  "+value+"种");
        });
    }

    private static HashMap<String,Integer> selectkind(HashMap<String, Integer> hashMap, File file) {
                                      //遍历文件夹中的文件和文件夹对象
        File[] files = file.listFiles();

        for (File file1 : files) {
            if (file1.isFile()){
                String[] split = file1.getName().split("\\.");//获取文件名

                if (hashMap.containsKey(split[1])){
                    Integer count = hashMap.get(split[1]);//得到集合中存的值(种类数量)
                    count++;
                    hashMap.put(split[1],count);//覆盖原来的值

                }else {
                    hashMap.put(split[1],1);
                }
            }else {
                selectkind(hashMap,file1);//递归
            }
        }
      return  hashMap;

    }


}

 

posted @ 2021-05-23 15:11  风をした  阅读(54)  评论(0)    收藏  举报