JavaFile类

这里复习File类的方法,主要是练习,练习,练习!

1.概述:

        File是文件和目录路径的抽象表示

        文件和目录是可以通过File封装成对象的

        对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已.它可以是存在的,也可以是不存在的.将来是要通过具体的操作把这个路径的内容转换为具体存在的

1.构造方法:

方法名说明
File(String pathname)*****通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File(String parent, String child)从父路径名字符串和子路径名字符串创建新的 File实例
File(File parent, String child)从父抽象路径名和子路径名字符串创建新的 File实例
public class FileDemo01 {
    public static void main(String[] args) {
        //File(String pathname): 通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
        File f1 = new File("E:\\it\\java.txt");
        System.out.println(f1);

        //File(String parent, String child): 从父路径名字符串和子路径名字符串创建新的 File实例
        File f2 = new File("E:\\it","java.txt");
        System.out.println(f2);

        //File(File parent, String child): 从父抽象路径名和子路径名字符串创建新的 File实例
        File f3 = new File("E:\\it");
        File f4 = new File(f3,"java.txt");
        System.out.println(f4);
    }
}

 2.绝对路径和相对路径

  • 绝对路径

    是一个完整的路径,从盘符开始

  • 相对路径

    是一个简化的路径,相对当前项目下的路径

    public class FileDemo02 {
        public static void main(String[] args) {
            // 是一个完整的路径,从盘符开始
            File file1 = new File("D:\\it\\a.txt");
    
            // 是一个简化的路径,从当前项目根目录开始
            File file2 = new File("a.txt");
            File file3 = new File("模块名\\a.txt");
        }
    }

    3.File文件创建功能

方法名说明
public boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件
public boolean mkdir()创建由此抽象路径名命名的目录
public boolean mkdirs()创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录

 4.File类删除功能

方法名说明
public boolean delete()删除由此抽象路径名表示的文件或目录

 5.File类判断功能

方法名说明
public boolean isDirectory()测试此抽象路径名表示的File是否为目录
public boolean isFile()测试此抽象路径名表示的File是否为文件
public boolean exists()测试此抽象路径名表示的File是否存在

6.File类斩获功能 

方法名说明
public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
public String getPath()将此抽象路径名转换为路径名字符串
public String getName()****返回由此抽象路径名表示的文件或目录的名称
public File[] listFiles()*****返回此抽象路径名表示的目录中的文件和目录的File对象数组

 

7.File类练习

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

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

/*
* 在当前模块下的aaa文件夹中创建一个a.txt文件
* */
public class Demo01 {
    public static void main(String[] args) throws IOException {
        File file = new File("作业\\src\\aaa");
//        判断文件夹 是否存在
        if(!file.exists()){
            file.mkdirs();
        }
//          这两种创建 都可以
//        File file1 = new File( file,"a.txt");
        File file1 = new File("作业\\src\\aaa\\a.txt");
//        判断 该 文件 是否存在
        if(!file1.exists()){
            file1.createNewFile();
        }
    }
}

2.删除一个多级文件夹  

import java.io.File;
//删除一个多级文件夹
public class Demo02 {
    public static void main(String[] args) {
        File file = new File("作业\\src\\aaa");
        deleteFile(file);
    }

    public static void deleteFile(File file){
//        获取该文件目录下的 所有子文件
        File[] files = file.listFiles();
//        遍历
        for (File file1 : files) {
//            判断是否为文件  如果是文件 直接删除
            if(file1.isFile()){
                file1.delete();
            }else {
//                如果 不是文件 是文件夹 递归 进入该文件夹
                deleteFile(file1);
            }
        }
//        最后将 该文件 删除
        file.delete();
    }
}

 

3.统计一个文件夹中每种文件的个数 并打印
*   打印格式:
*       txt:2个
/*
* 统计一个文件夹中每种文件的个数 并打印
*   打印格式:
*       txt:2个
* */
public class Demo03 {
    public static void main(String[] args) {
        File src = new File("D:\\java\\javaDemo\\java");
//        File src = new File("D:");
        HashMap<String, Integer> map = new HashMap<>();
        getCount(map,src);
//      遍历
//        System.out.println(map);
        Set<String> set = map.keySet();
        for (String s : set) {
            Integer integer = map.get(s);
            System.out.println(s + " -> " + integer);
        }
    }
    public static void getCount(HashMap<String,Integer> map, File src){
//        查看子文件
        File[] files = src.listFiles();
//          遍历
        for (File file : files) {
//            判断是否为文件  是文件得到文件名
            if(file.isFile()){
                String filename = file.getName();
                String[] filenameArr = filename.split("\\.");//转义符
//                判断 截取之后 是否等于2
                if(filenameArr.length == 2){
//                    得到后缀名
                    String endName = filenameArr[1];
//                    判断是否出现过   看map集合里边是否出现过该值
                    if(map.containsKey(endName)){
                        Integer count = map.get(endName);
                        count++;
                        map.put(endName,count);
                    }else {
                        map.put(endName,1);
                    }
                }
//              如果是文件夹  递归 进入 再次
            }else {
                getCount(map,file);
            }
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

華同学.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值