Java File的常规API方法

Java File的常规API方法

一、 File类概述

在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象,也就是说,如果希望在程序中操作文件和目录,则都可以通过 File 类来完成。File 类定义了一些方法来操作文件,如新建、删除、重命名文件和目录等。

File 类不能访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。

File 类提供了如下三种形式构造方法。

  1. File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。
  2. File(String path, String name):path 是路径名,name 是文件名。
  3. File(File dir, String name):dir 是路径对象,name 是文件名。

使用任意一个构造方法都可以创建一个 File 对象,然后调用其提供的方法对文件进行操作

二、File类初体验

// 想要一个File对象来表示文件夹和hello.txt文件
        File hello = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources","hello.txt");
        // 判断文件是否存在
        System.out.println("判断hello.txt文件是否存在: "+hello.exists());
        // 判断是否为文件夹 或者 文件
        System.out.println("判断hello.txt文件是否文件: "+hello.isFile());
        System.out.println("判断hello.txt文件是否文件夹: "+hello.isDirectory());

        // 获取文件的内容长度
        System.out.println("获取hello.txt的文件长度"+hello.length());
        // 获取文件最后的修改时间
        System.out.println("获取hello.txt的最后修改时间"+new Date(hello.lastModified()));

三、File字段

		// 与系统有关的路径分隔符 返回值都是一个分号
        System.out.println("与系统有关的路径分隔符"+File.pathSeparatorChar); // Char
        System.out.println("与系统有关的路径分隔符"+File.pathSeparator);     // String

        // 名称分隔符
        // abc/hello/a.txt
        System.out.println("与系统有关的名称分隔符:"+File.separator);
        System.out.println("与系统有关的名称分隔符:"+File.separatorChar);

四、路径写法

    public void Test3(){
        // 我们写路径的时候可以直接写\ 为什么定义字段呢
        // 定义字段的作用
        File file1 = new File("d\\io");
        File file2 = new File("d:"+File.separator+"io");
        // 不同的系统中分隔符不一样,windows和DOS是\;但是Unix和linux是/;
        // 其实现在在windows可以识别/
        // 为了兼容性更好,所以使用 File.separator
        // 推荐使用 / 或者 File.separator
        
    }

五、绝对路径和相对路径

绝对路径:是一个固定的路径,从盘符开始;

  • 对于UNIX平台,绝对路径名的前缀是"/",相对路径名没有前缀。
  • 对于windows平台,绝对路径名的前缀电驱动器号和一个":“组成,例"c : \ …”,相对路径没有盘符前缀。
    相对路径:是相对于某个位置开始;

相对路径是指相对于某位置的路径,是指相对于当前目录。

  • 在执行Java程序时,相对路径为执行java命令时当前所在的目录。

六、构造器

    public void Test5(){
        // File(String pathname)
        File file1 = new File("C:/");
        System.out.println("判断对应的文件夹是否存在: "+file1.exists()); // true
        // 结合file的路径,寻找file2,file1作为父目录 也就是找的 C:/hello.txt
        File file2 = new File(file1,"hello.txt");
        System.out.println(file2.exists());
        // 写入路径和文件名 和第二个一样
        File file3 = new File("C:/","hello.txt");
    }

七、创建方法

    public void Test5(){
        // File(String pathname)
        File file1 = new File("C:/");
        System.out.println("判断对应的文件夹是否存在: "+file1.exists()); // true
        // 结合file的路径,寻找file2,file1作为父目录 也就是找的 C:/hello.txt
        File file2 = new File(file1,"hello.txt");
        System.out.println(file2.exists());
        // 写入路径和文件名 和第二个一样
        File file3 = new File("C:/","hello.txt");
    }

    @Test
    public void Test6() throws IOException {
//        File file1 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources");
        // boolean createNewFile() 当且仅当不存在此抽象路径名指定的文件时,不可分的创建一个,存在则不会创建
//        file1.createNewFile(); // 抛出异常
//        static File createTempFile(String prefix, String suffix)在默认临时文件目录中创建一个空文件,使用给定的前缀和后缀生成其名称。
//        File tempFile = File.createTempFile("Java", ".yyds");
//        File类重写了toString方法,返回文件的路径
//        System.out.println(tempFile);

//        createTempFile(String prefix, String suffix, File directory) 在指定的目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
//        File tempFile2 = File.createTempFile("Java", ".yyds", file1);
//        System.out.println(tempFile2);

        // boolean mkdir() 创建抽象路径名指定的额目录
//        File file2 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\TestMKDIR");
//        boolean isMK = file2.mkdir();
//        if(isMK){
//            System.out.println("文件夹创建成功");
//        }else {
//            System.out.println("文件创建失败");
//        }
        // boolean mkdirs() 创建抽象路径名指定的目录 加s可以创建多级目录
        File file3 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\TestMKDIR\\duo1\\duo2\\duo3");
        boolean isMKs = file3.mkdirs();
        if(isMKs){
            System.out.println("文件夹创建成功");
        }else {
            System.out.println("文件创建失败");
        }
    }

八、renameTo方法

boolean renameTo(File dest) 重新命名此抽象路径名表示的文件

  • 情况一:如果源文件对象和参数文件对象位于同一级目录,就是改名字操作
  • 情况二:如果不在一个目录,那么就是文件移动操作,然后改名字
    public void Test8(){
//        boolean renameTo(File dest) 重新命名此抽象路径名表示的文件
        // 情况一:如果源文件对象和参数文件对象位于同一级目录,就是改名字操作
        File filex = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\hello.txt");
        File filey = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\helloworld.txt");
        filex.renameTo(filey);
        // 情况二:如果不在一个目录,那么就是文件移动操作,然后改名字
        File filex1 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\helloworld.txt");
        File filey1 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\TestMKDIR\\hell1oworld.txt");
        filex1.renameTo(filey1);
    }

九、删除方法

  • boolean delete() 删除文件 回收站没有 java中的删除不走回收站
  • 如果删除的是目录 则必须是空目录 否则无法删除
  • void deleteOnExit() 虚拟机终止的时候删除文件
    public void Test9(){
        File file1 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\TestMKDIR\\hell1oworld.txt");
        // boolean delete() 删除文件 回收站没有 java中的删除不走回收站
        // 如果删除的是目录 则必须是空目录 否则无法删除
        
        boolean isDel = file1.delete();
        if (isDel){
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败");
        }
        
        // void deleteOnExit() 虚拟机终止的时候删除文件
        
    }

十、判断方法

    public void Test10(){
        // 存在该文件
        File file1 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\1.txt");
        // 存在 只读
        File file2 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\2.txt");
        // 存在 隐藏
        File file3 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\3.txt");
        // 不存在该文件
        File file4 = new File("C:\\Users\\MissLiuAndMrWang\\Desktop\\JavaIO\\src\\main\\resources\\4.txt");

        // bool canExecute() 测试是否是可执行文件.exe
        file1.canExecute(); // true
        file2.canExecute();// true
        file3.canExecute();// true
        file4.canExecute();// false
        // canRead() 测试文件是否可读 和 是否可执行一样
        // canWrite() 是否可写
        file1.isAbsolute();// 是否是绝对路径
        file2.isHidden();// 是否是隐藏文件
    }

十一、获取方法

这里只写了一部分 还有很多,用到再补充吧

public void Test11(){
        // 相对路径写法
        File file1 = new File("src\\main\\resources\\","1.txt");
        System.out.println(file1.exists());
        // file getAbsoluteFile() 返回抽象路径的绝对路径名的形式
        File file2 = file1.getAbsoluteFile();
        System.out.println(file2);

        // equals() 比较的是两个对象的抽象路径名;
        System.out.println(file1.equals(file2)); // false

//        getAbsolutePath() 获取绝对路径的路径名称
        System.out.println("file1的绝对路径:" + file1.getAbsolutePath());

        // long getFreeSpace() 返回抽象路径名指定的分区中未分配的字节数
        long freeSpace = file1.getFreeSpace();
        System.out.println(freeSpace);

        //String getName() 返回此抽象路径名表示的文件名,如果是目录则会最后一节目录
        System.out.println(file1.getName());

        // String getParent() 获取文件的父路径
        System.out.println(file1.getParent()); // config

        // File geParentFile() 获取父路径对象
        // String getPath() 将抽象路径名转换为一个路径名字字符串

        // long getTotalSpace() 获取分区的总大小
        

    }

十二、修改方法

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值