File类.Java

 一、File类

1,概述🏀🏀🏀

(1) java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关  

(2) File类中涉及到关于文件或文件夹的创建、删除、重命名、修改时间、文件大小等方法,创建File对象的目的就是为了使用这些方法 ,但它并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。

(3) File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径。这个路径可以是存在的也可以是不存在的。

(4) File对象可以作为参数传递给流的构造器,指明读取或写入的"终点"。 

2、File类的使用🏀🏀🏀

1. 绝对路径 vs 相对路径

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

🧩相对路径:不带盘符,是相对于某个位置开始 

  • main()方法中的相对路径是相对于当前工程
  • 单元测试方法中的相对路径是相对于当前模块

2. 路径分隔符

🧩路径中的每级目录之间用一个路径分隔符隔开。

🧩路径分隔符和系统有关:

  • windows和DOS系统默认使用"\"来表示
  • UNIX和URL使用"/"来表示

🧩Java程序支持跨平台运行,因此路径分隔符要慎用。
为了解决这个隐患,File类提供了一个常量:
public static final String separator:根据操作系统,动态的提供分隔符

 3,常用的构造方法

📝📝构造方法就是根据字符串表示的路径,变成File对象。变成File对象的目的:使用File里面的            方法。 

public File (String pathname)根据文件路径创建文件对象(不可能是文件夹)
public File (String parent,String child)根据父路径名字符串和子路径名字符串创建文件对象
public File (File parent,String child)根据父路径对应文件对象和子路径名字符串创建文件对象

代码演示:

 public static void main(String[] args) {
       
        String str="D:\\FileDemo\\b2.txt";
        File f1 = new File(str);
        System.out.println(f1);//字符串变成了真实的路径,D:\FileDemo\b2.txt

        //2,父级路径:D:\FileDemo
        //   子级路径:b2.txt
        String parent="D:\\FileDemo";
        String child="b2.txt";
        File f2 = new File(parent, child);
        System.out.println(f2);

        //3,
        File fileParent = new File("D:\\FileDemo");
        File f3 = new File(fileParent, "b2.txt");
        System.out.println(f3);
    }

结果: 

834dc35c55db4736959319b08f9b75bc.png

4,成员方法

public long length()返回文件的大小(不能是文件夹)
public String getAbsolutePath()返回文件的绝对路径
public long lastModifies()返回文件最后修改的时间(时间毫秒值) 
public String getPath()返回定义文件时使用的路径
public String getName()返回文件的名称。带后缀

public String getName():

📝 细节1: 调用者是文件:返回文件的名称+后缀   b1.txt

b1:文件名

txt:扩展名

📝细节2: 调用者是文件夹:返回文件夹名称 

 代码演示:

public static void main(String[] args) {
        //定义File对象
        File f1 = new File("D:\\FileDemo\\b1.txt");//文件
        File files = new File("D:\\FileDemo\\aaa");//文件夹

        //1,返回文件的大小(单位字节)
        long l = f1.length();
        System.out.println(l);//6
        System.out.println(files.length());//0


        System.out.println("------------------=---");

        //2,getAbsolutePath()   返回文件的绝对路径
        String path = f1.getAbsolutePath();
        System.out.println(path);//D:\FileDemo\b1.txt
        File f4 = new File("FileDemo1");//写的是相对路径
        String path1 = f4.getAbsolutePath();
        System.out.println(path1);//C:\Users\86166\IdeaProjects\one\FileDemo1

        System.out.println("------------------=---");

        //3,getPath()    返回定义文件时使用的路径,就是括号里的参数是什么就返回什么
        String path2 = f1.getPath();
        System.out.println(path2);//D:\FileDemo\b1.txt
        File f5 = new File("FileDemo1");
        String path3 = f5.getPath();//FileDemo1
        System.out.println(path3);

        System.out.println("------------------=---");

        
        String f1Name = f1.getName();
        System.out.println(f1Name);// b1.txt
        System.out.println(files.getName());//aaa

        System.out.println("------------------=---");

        //4,lastModifies() 返回文件最后修改的时间(时间毫秒值)
        long l1 = f1.lastModified();
        System.out.println(l1);//毫秒值
        Date date = new Date(1716713772066L);//Date
        System.out.println(date);
        SimpleDateFormat format = new SimpleDateFormat();
        System.out.println(format.format(date));//Date-->String

    }

结果: 

654ce84798d149e1a6c26e12d26dda26.png

5,成员方法:添加,删除 

public boolean createNewFile()创建一个新的空文件(创建的一定是文件
public boolean mkdir创建单级文件夹
public boolean mkdirs创建多级文件夹
public boolean delete删除文件、空文件夹(不可能是有内容的 文件夹)

 public boolean createNewFile() :创建一个新的空文件(创建的一定是文件 )

📝细节1:

        第一次运行的时候return ture就表示创建成功,所以第二次运行就会return false

📝细节2:

        createNewFile:创建的一定是文件。如果不包含后缀,就创建一个不含后缀的文件

  代码演示:

public static void main(String[] args) throws IOException {
        //1,createNewFile()    创建一个新的空文件
        File f1 = new File("D:\\FileDemo\\e1.txt");
        boolean f1NewFile = f1.createNewFile();
        System.out.println(f1NewFile);
        File f2 = new File("D:\\FileDemo\\aaa2");
        System.out.println(f2.createNewFile());
       

        System.out.println("=========================");

        //2,mkdir  make Directory,       创建单级文件夹(目录)
        File f3 = new File("D:\\FileDemo\\fff");
        System.out.println(f3.mkdir());//true
        File f4 = new File("D:\\FileDemo\\aaa\\b");
        System.out.println(f4.mkdir());//true

        System.out.println("=========================");

        //3,mkdirs             创建多级文件夹
        File f5 = new File("D:\\FileDemo\\aaa\\aa\\a");
        System.out.println(f5.mkdirs());//true

        System.out.println("=========================");

        //4,delete             删除文件、空文件夹
        System.out.println(f5.delete());//删除文件夹a
        System.out.println(new File("D:\\FileDemo\\aaa\\aa").delete());//删除文件夹aa
        //细节:
        //如果删除的文件夹有内容,删除失败
    }

6,成员方法:获取,遍历 

(掌握)public File[] listFiles()获取当前路径下所有内容
public static File[] listRoots()列出可利用的文件系统根
public String[] list()获取当前该路径下所有内容
public String[] list(FilenameFilter filter)利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FileFilter filter)利用文件名过滤器获取当前该路径下所有内容
public File[] listFiles(FilenameFilter filter)利用文件名过滤器获取当前该路径下所有内容

注意:📝📝📝📝📝📝 

     获得的所有内容都是指该路径下的一级内容,不包下面的子文件夹

重点:📝📝📝📝📝📝

🧩当调用者File表示的路径不存在时,返回null

🧩当调用者File表示的路径是文件时,返回null

🧩当调用者File返回的路径是空文件夹时,返回长度为0的数组

🧩当调用者File表示的路径是一个有内容的文件夹时,将里面所有的文件和文件夹路径放到File数组中返回 

🧩当调用者File表示的路径是一个有隐藏内容的文件夹时,将里面所有的文件和文件夹路径放到File数组中返回,包含隐藏文件 

🧩当调用者File表示的路径是需要权限才能访问的文件夹时,返回null

 代码演示:

 public static void main(String[] args) {
        //1,创建File对象
        File f1 = new File("D:\\FileDemo");

        System.out.println("======================");


        //2,listFiles()    获取当前路径下所有一级内容
        File[] files = f1.listFiles();
        for (File f : files) {
            //f依次表示FileDemo文件夹里面的所有文件或者文件夹
            System.out.println(f);
        }
       

        System.out.println("======================");


        //3,listFiles(FileFilter filter)  文件名过滤器的方法获取该路径下所有内容
        File[] arrF = f1.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return true;
            }
        });
        System.out.println(Arrays.toString(arrF));

        System.out.println("======================");


        //4,,获取以.txt结尾的文件
        System.out.println("方法一:---------------------------");
        for (File file : files) {
            if(file.isFile()&&file.getName().endsWith(".txt")){
                System.out.println(file);
            }
        }


        System.out.println("方法二:---------------------------");
        //listFiles(FileFilter filter)  文件名过滤器的方法
        File[] arr=f1.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.isFile()&&pathname.getName().endsWith(".txt");
            }
        });
        System.out.println(Arrays.toString(arr));


        System.out.println("方法三:---------------------------");
        /*
        * accept()的参数:
        * 参数一:父级路径
        * 参数二:子级路径
        * 返回值:true,表示当前路径保留
        *       false,表示当前路径舍弃不要
        * */
        String[] arr3 = f1.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                File pathname = new File(dir, name);
                return pathname.isFile() && pathname.getName().endsWith(".txt");
            }
        });
        System.out.println(Arrays.toString(arr3));
    }

 结果: 

67ab24d8ce4a45d09fa90046cb0f907c.png

 案例路径: 

1c8902642e084f1aa86b7e9b48e2398a.png

3,练习: 

🎨🎨🎨需求:在当前模块下的aaa文件夹中创建一个a.txt文件

 代码演示: 

public static void main(String[] args) throws IOException {
        //1,先创建一个父级路径
        File parent = new File("aaa");
        parent.mkdirs();
        File aaaFile = new File(parent, "a.txt");
        boolean b = aaaFile.createNewFile();
        if(b){
            System.out.println("创建成功");
        }else {
            System.out.println("创建失败");
        }

    }

 结果: 

62a5f295f42248fd8b0284f7b1d9c43e.png

需求: 

🎨🎨🎨创建一个方法,找出所有以.avi结尾的文件 

 代码演示: 

 public static void main(String[] args) {
        File file = new File("D:");
        findAVI(file);
    }
    public static void findAVI(File src){
        File[] files = src.listFiles();
        if(files!=null){
            for (File f : files) {
                if(f.isFile()){
                    if(f.getName().endsWith(".avi")){
                        System.out.println(f);
                    }
                }else{
                    findAVI(f);
                }
            }
        }
    }

//查找整个系统的.vai文件
    /*public static void findAVI(){
        File[] roots = File.listRoots();
        for (File root : roots) {
            findAVI(root);
        }
    }*/

 结果: 

222845fec5a94366888223ecd35ae11f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/666146.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI实时免费在线图片工具3:人物换脸、图像编辑

1、FaceAdapter 人物换脸 https://huggingface.co/spaces/FaceAdapter/FaceAdapter 2、InstaDrag https://github.com/magic-research/InstaDrag

Golang:gin模板渲染base64图片出现#ZgotmplZ

目录 问题描述场景复现解决办法 问题描述 gin模板渲染base64图片出现#ZgotmplZ 场景复现 项目目录 main.go templates/index.htmlgin模板渲染base64图片 package mainimport ("net/http""github.com/gin-gonic/gin" )// base64图片 var imageUrl &qu…

【Tlias智能学习辅助系统】03 部门管理 前后端联调

Tlias智能学习辅助系统 03 部门管理 前后端联调 前端环境 前端环境 链接:https://pan.quark.cn/s/8720156ed6bf 提取码:aGeR 解压后放在一个不包含中文的文件夹下,双击 nginx.exe 启动服务 跨域的问题已经被nginx代理转发了,所以…

Vscode发生鼠标悬停正在加载、无法跳转和提示词的问题

Vscode发生鼠标悬停正在加载、无法跳转和提示词的问题 查看python语言服务器的日志,确定问题。 我的问题是加载的vscode 目录下存在一个很大的数据集目录,导致无法正常工作。 解决办法: 在vscode的pylance设置中,排除对应的目…

使用 EBS 和构建数据库服务器并使用应用程序与数据库交互

实验 4:使用 EBS 实验概览 本实验着重介绍 Amazon Elastic Block Store (Amazon EBS),这是一种适用于 Amazon EC2 实例的重要底层存储机制。在本实验中,您将学习如何创建 Amazon EBS 卷、将其附加到实例、向卷应用文件系统,然后进…

【简单介绍下Milvus,什么是Milvus?】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【Linux】权限的概念

1.Linux权限的概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受权限限制 普通用户:在linux下做有限的事情,受权限设置。 windows下也有超级用户…

汽车IVI中控开发入门及进阶(二十三):i.MX8

前言: IVI市场的复杂性急剧增加,而TimeToMarket在几代产品中从5年减少到2-3年。Tier1正在接近开放系统的模型(用户可以安装应用程序),从专有/关闭源代码到标准接口/开放源代码,从软件堆栈对系统体系结构/应用层/系统验证和鉴定的完全所有权,越来越依赖第三方中间件和平…

liunx文件系统与日志分析

文章目录 一、基本概念二、日志分析三、实验 一、基本概念 文件是存储在硬盘上的,硬盘上的最小存储单位是扇区每个扇区大小事512字节 inode:元信息(文件的属性 权限 创建者 创建日期) block:块 连续八个扇区组成一块…

JSON Web Token

JWT 什么是JWT JWT(JSON Web Token)是一种用于在各方之间作为JSON对象安全地传输信息的开放标准(RFC 7519)。该信息经过数字签名,因此是可验证和可信的。JWT 可以使用HMAC算法或使用RSA的公钥/私钥对进行签名 JWT的…

HackTheBox-Machines--Nineveh

Nineveh测试过程 1 信息收集 NMAP 端口扫描 80 端口 80端口是服务器的默认页面,无可利用功能点,源代码没有可利用的敏感信息 目录扫描 1.http://10.129.25.123/department 访问/department目录跳转到登录页面,尝试暴力破解,获取…

系统架构设计师【第5章】: 软件工程基础知识 (核心总结)

文章目录 5.1 软件工程5.1.1 软件工程定义5.1.2 软件过程模型5.1.3 敏捷模型5.1.4 统一过程模型(RUP)5.1.5 软件能力成熟度模型 5.2 需求工程5.2.1 需求获取5.2.2 需求变更5.2.3 需求追踪 5.3 系统分析与设计5.3.1 结构化方法5.3.2 面向对象…

stm32启动文件

启动文件由汇编编写,是系统上电复位后第一个执行的程序。主要做了以下工作: 初始化堆栈指针SP_initial_sp 初始化PC指针Reset_Handler 初始化中断向量表 配置系统时钟 调用C库函数_main初始化用户堆栈,从而最终调用main函数去到C的世界 …

虚拟现实环境下的远程教育和智能评估系统(七)

在后端代码的基础上,利用vue框架设计前端界面,至此,用户界面基本成型,后续添加其他进阶功能; 另,前后端交互相关: UsersVO.java package com.roncoo.education.user.feign.interfaces.vo;impor…

【Unity Shader入门精要 第11章】让画面动起来(一)

1. Unity Shader中的时间变量 Shader控制这物体的显示,当向Shader中引入时间变量后,就可以让物体的显示效果随时间发生变化,以实现动画效果。 Unity中常见的时间变量如下表: 变量类型描述_Timefloat4(t/20, t, 2t, 3t)&#xf…

二维数组传参时不用二级指针接收

先放结论: 1. 二维数组数组名指向的类型是 int [x] 类型,int** 指针指向类型是 int* ,如果用二级指针接收会导致访问错误,因为 int [x] 类型和 int* 类型不同。 2. 指向什么类型的指针1就按照该类型的字节数1移动。 最近在学…

unity2D跑酷游戏

项目成果 项目网盘 导入资源包 放入Assets文件Assets资源文件 游戏流程分析 摄像机size调小,让图片占满屏幕 人跑本质,相对运动,图片无限向右滚动 图片720,缩小100倍第二个图片x为7.2每unit px100两张图片刚好挨着连贯 空对象Bg…

Cloudflare的增长正在放缓,股价过高,未来将进一步下跌

来源:猛兽财经 作者:猛兽财经 一、Cloudflare公司介绍 1.1、Cloudflare(NET)是一家全球性云平台,总部位于美国旧金山,在英国伦敦亦设有办事处。 Cloudflare以向客户提供网站安全管理、性能优化及相关的技术支持为主要业务。通过基…

职场中,那些35岁以上的测试猿到底去哪了?

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

收银系统源码--商超水果生鲜店收银硬件要怎么选择?

新零售时代,越来越多的商家开始明白,除了要做好店铺定位、店面装潢和商品的设定,还要选购最适合店铺运营需求的收银机和硬件,好的收银机和收银系统可以帮助商家做好收支统计、库存管理、人员配置。客户服务等工作。现在的智能收银…