File基础

一,File,对文件夹进行操作,表示文件或者文件夹的路径对象

  1,   File 的三种创建方式,如下代码

import java.io.File;

public class FileDemo1 {
    public static void main(String[] args) {
        //File 的三个构造方法
        //直接创建
        File file=new File("D:\\xiaowang\\a.txt");
        System.out.println(file);
        //根据父路径和子路径进行拼接,创建File对象
        File file1=new File("D:\\xiaowang","a.txt");
        System.out.println(file1);
        //创建一个父路径,再根据父路径和子路径创建一个File对象
        File file2=new File("D:\\xiaowang");
        File file3=new File(file2,"a.txt");
        System.out.println(file3);
    }
}

2,绝对路径和相对路径:

     绝对路径:从盘符开始,表示位置不会再变。

     相对路径:相对当前项目路径而言。

import java.io.File;

public class FileDemo2 {
    public static void main(String[] args) {
        //这个路径固定不变、是绝对路径,从盘符开始写路径
        File file=new File(" C:\\itheima\\a.txt");
        //相对路径,是相对于项目的根目录而言,不用写根目录的路径
        File file1=new File("day11\\a.txt");
        //当前项目下,指定模块下的相对路径
        File file2=new File("day11\\a.txt");
    }
}

3,File类三种创建功能

1)createNewFile():只能创建文件,有返回值,为Boolean类型,文件所在的文件夹必须存在

2)mkdir():只能创建单级文件夹 

 3)mkdirs():既能创建单级文件夹,又能创建多级文件夹(用这种方法比较多

import java.io.File;
import java.io.IOException;

public class FileDemo3 {
    public static void main(String[] args) throws IOException {
        //createNewFile
        //注意点;
        //1,如果文件存在,那么创建失败,返回false
        //2,如果文件不存在,创建成功,返回true
        //3,createNewFile方法不管调用者有没有后缀名,只能创建文件
        File f=new File("D:\\itheima\\a.txt");
        boolean result= f.createNewFile();
        //mkdir,创建单级文件夹
        File f1=new File("D:\\itheima\\a");
        f1.mkdir();
        //mkdirs,创建多级文件夹
        File f2=new File("D:\\itheima\\aa\\bb\\cc");
        f2.mkdirs();
        //删除文件夹 delet
        boolean d = f.delete();
        System.out.println(d);
    }
}

4,删除文件夹\文件,delete()方法,返回值为Boolean类型

     注意:delete()删除文件夹不走回收站

5,File类当中的判断和获取功能

    1),isDirectory():测试此抽象路径名表示的File表示的是否是文件夹,返回值为Boolean

    2),isFile():测试此抽象路径名表示的File表示的是否是文件,返回值问Boolean

    3),exists():测试此抽象路径名表示的File是否存在,返回值为Boolean

    4),getName():返回由此抽象路径名表示的文件或目录的名称,返回值为String

            如果调用的是一个文件,则获取的是文件名和后缀

            如果调用的是一个文件夹,获取的就是一个文件夹的名字

6,高级获取功能:ListFile(),返回一个File 数组

      功能:进入文件夹,获取文件夹中所有的文件和问价你家的File对象(包括隐藏文件),并把这                     些File对象都放在一个File数组中;

       注意:

               1),当调用者是一个文件时,返回null;

               2),当调用者是一个空文件夹时,返回的是一个长度为0 的数组;

               3),当调用者是一个有权限才能进入的文件夹时,也会返回null;

               4),当调用者为空时,也会返回null;

import java.io.File;

public class FileDemo5 {
    public static void main(String[] args) {
        //listFiles
        File f=new File("D:\\");
        File[] files = f.listFiles();
        for (File file : files) {
            System.out.println(file); 
  }
 }
}

7,练习1:删除文件夹,采用递归方法

import java.io.File;

public class practice1 {
    public static void main(String[] args) {
        File f = new File("D:\\itheima");
        deletDirectory(f);

    }

    public static void deletDirectory(File file) {
        //获取文件夹中的内容
        File[] files = file.listFiles();
        //for循环是用来删除文件夹里的内容
        for (File file1 : files) {//用加强的for循环
            if (file1.isFile()) {//判断是不是文件
                //是文件,直接用delet删除
                file1.delete();
            } else {
                //如果不是文件在,则是文件夹,调用递归
                deletDirectory(file1);
            }
        }
        //循环结束后,删除空文件夹
        file.delete();
    }
}

    练习2:统计一个文件夹中每种文件出现的个数并打印

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

public class practice3 {
    //统计文件中每一种文件出现的次数
    public static void main(String[] args) {
        //建立一个集合(HashMap)
        HashMap<String, Integer> map = new HashMap<>();
        //建立一个文件包装,将目录文件进行包装
        File file = new File("D:\\黑马\\StudedntManager");
        //创建函数,将文件和集合作为参数传入方法中
        getCount(map, file);
        System.out.println(map);
    }

    public static void getCount(HashMap<String, Integer> map, File file) {
        //获取文件的内容
        File[] files = file.listFiles();
        for (File file1 : files) {
            //如果是文件,获取文件的后缀
            if (file1.isFile()) {
                String[] split = file.getName().split("\\.");
                //获取数组中最后一个数据
                String endName = split[split.length - 1];
                //在集合中判断文件后缀出现的次数,如果首次出现,则直接存入集合中
                if (map.containsKey(endName)) {
                    //如果不是首次出现,取出键,值加一,存入集合中
                    Integer v = map.get(endName);
                    map.put(endName, v++);
                    //如果是第一次存入,那么就直接存入集合
                } else {
                    map.put(endName, 1);
                }

            } //如果是文件夹,调用递归
            else {
                getCount(map, file1);
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值