java-File操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、概述

java.io.File类:文件和文件目录路径的抽象表示形式,与平台本身无关。File类中设计到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未设计写入或读取文件内容的操作,若想要读取或写入文件内容,则必须使用IO流来完成。

若想要在Java程序中表示一个真实存在的文件或目录,则必须有一个File对象,但是Java程序中的一个File对象,可能并不对应一个真实存在的文件或目录。

File对象可作为餐宿传递给流的构造器,指明读取或写入的"终点"。


二、基本使用

①绝对路径与相对路径

  • 绝对路径:固定的路径,从主机盘符开始。
  • 相对路径:相对于某个位置开始的路径。
    • main方法中的相对路径是从当前工程开始。
    • 单元测试的相对路径是相对于当前模块。

②路径分隔符

  • Windows、DOS系统:使用""来表示。
  • UNIX和URL:使用"/"来表示。
    Java为了支持跨平台运行,为了解决路径分隔符在不同OS而不同的问题,File提供了一个常量File.separator,可根据操作系统来动态提供分隔符:
File file1 = new File("d:\\atguigu\\info.txt");
File file2 = new File("d:" + File.separator + "atguigu" + File.separator + "info.txt");
File file3 = new File("d:/atguigu");

③构造方法

方法名称说明
public File(String pathname)根据文件路径创建文件对象
public File(String parent,String child)根据父路径名字符串和子路径名字符串创建文件对象
public File(File parent,String child)根据父路径对应文件对象和子路径名字符串创建文件对象
package org.example;

import java.io.File;

public class Main {
    public static void main(String[] args) {
        //1.根据字符串表示的路径变为File对象
        String str="C:\\Users\\lenovo\\Desktop\\a.txt";
        File file1=new File(str);
        //当该文件真实存在时才会产生对应关系
        //创建File对象后,就表示一个真实的路径,从而可调用File中的方法
        System.out.println(file1);
        //2.将父级路径与子级路径进行拼接来构造File对象
        /*
        * 以"C:\\Users\\lenovo\\Desktop\\a.txt"为例,有:
        *   父级路径:C:\\Users\\lenovo\\Desktop
        *   子级路径:a.txt
        * */
        String parent="C:\\Users\\lenovo\\Desktop";
        String child="a.txt";
        File file2=new File(parent,child);
        //实质就是加了间隔符
        System.out.println(file2);
        //3.将一个File表示的路径和String表示的路径进行拼接
        File parent2=new File("C:\\Users\\lenovo\\Desktop");
        String child2="a.txt";
        File file3=new File(parent2,child2);
        System.out.println(file3);
    }
}

④常用方法

获取功能

在这里插入图片描述

package org.example;
import java.io.File;

public class Main {
    public static void main(String[] args) {
        File file=new File("G:\\408\\2022+2023年408");
        System.out.println("获取绝对路径:"+file.getAbsolutePath());
        System.out.println("获取路径:"+file.getPath());
        System.out.println("获取文件名:"+file.getName());
        System.out.println("获取上级目录名称:"+file.getParent());
        System.out.println("获取文件长度(字节数):"+file.length());
        System.out.println("获取最后一次修改时间(ms):"+file.lastModified());
        System.out.println("将目录下所有文件或文件目录名存入字符串数组中:");
        String[] list = file.list();
        for(String s : list){
            System.out.print(s+" ");
        }
        System.out.println("将目录下所有文件或文件目录名存入文件数组中:");
        File[] files = file.listFiles();
        for(File f : files){
            System.out.print(f+" ");
        }
    }
}

判断功能

在这里插入图片描述

package org.example;
import java.io.File;

public class Main {
    public static void main(String[] args) {
        File file=new File("G:\\408\\2022+2023年408");
        System.out.println("判断是否是目录"+file.isDirectory());
        System.out.println("判断是否是文件"+file.isFile());
        System.out.println("判断是否真实存在"+file.exists());
        System.out.println("判断是否可读"+file.canRead());
        System.out.println("判断是否可写"+file.canWrite());
        System.out.println("判断是否是隐藏"+file.isHidden());
    }
}

创建功能

在这里插入图片描述

  @Test
    public void test6() throws IOException {
        File file1 = new File("Hello.txt");
        if(!file1.exists()){
            //文件的创建
            file1.createNewFile();
            System.out.println("创建成功");
        }else{//文件存在
            file1.delete();
            System.out.println("删除成功");
        }
    }
    @Test
    public void test7(){
        //文件目录的创建
        File file1 = new File("d:\\io\\io1\\io3");
        boolean mkdir = file1.mkdir();
        if(mkdir){
            System.out.println("创建成功1");
        }


        File file2 = new File("d:\\io\\io1\\io4");
        boolean mkdir1 = file2.mkdirs();
        if(mkdir1){
            System.out.println("创建成功2");
        }
        //要想删除成功,io4文件目录下不能有子目录或文件
        File file3 = new File("D:\\io\\io1\\io4");
        file3 = new File("D:\\io\\io1");
        System.out.println(file3.delete());
    }

注,以上test6所用的是相对路径,会默认创建在项目路径下:
在这里插入图片描述

删除功能

在这里插入图片描述


三、源码分析

算是留一个坑,考研+技术同时抓的话还是要以推进度为主,这里的源码分析在我完成后端技术的复习之后再来填这个坑。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值