File类.Java

news2024/11/19 22:46:14

 一、File类

1,概述🏀🏀🏀

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

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

(3) 想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。

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

2、File类的使用🏀🏀🏀

1. 绝对路径 vs 相对路径

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

🧩相对路径:是相对于某个位置开始 

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

2. 路径分隔符

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

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

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

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

 3,常用的构造方法

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

代码演示:

 public static void main(String[] args) {
        //1,根据字符串表示的路径,变成File对象。
        //变成File对象的目的:使用File里面的方法
        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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue 表格 随手笔记

对表格中单元格回显 做循环 <template slot-scope"scope"> <el-table-column label"责任网格类型" align"center"><template slot-scope"scope"><div v-for"(item, index ) in gridDutyTypeList">&…

C# 工商银行缺少infosecapiLib.infosec

搜索Tlbimp.exe 这里使用4.8.1下的处理&#xff0c;以管理员身份打开powershell cd "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8.1 Tools".\TlbImp.exe "G:\CSharp\icbc-api-sdk-cop-c#\sdk-cop\sdk-cop\dll\infosecapi.dll" …

破解微信校验难题,Xinstall助你轻松实现Universal Link功能!

在移动互联网时代&#xff0c;App的推广和运营离不开各种技术手段的支持。其中&#xff0c;Universal Link作为连接App和网页的重要桥梁&#xff0c;被广大开发者所青睐。然而&#xff0c;很多开发者在使用Universal Link时遇到了微信校验不通过的问题&#xff0c;这不仅影响了…

【Linux】-Kafka集群安装部署[18]

简介 Apache Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。 同RabbitMQ一样&#xff0c;Kafka也是消息队列。不过RabbitMQ多用于后端系统&#xff0c;因其更加专注于消息的延迟和容错。 Kafka多用于大数据体系&#xff0c;因其更加专注于数据的…

CLIP 源码分析:model.py 文件

from collections import OrderedDict from typing import Tuple, Unionimport numpy as np import torch import torch.nn.functional as F from torch import nn# 上面都是头文件Bottleneck类的作用 残差网络 ResNet 等我再去补一补相关知识。 # 这段代码定义了一个名为 Bot…

在MySQL中,Linux表同步到Windows,有大小写的就没同步的详细解决方案

在 Linux 系统上&#xff0c;文件名是区分大小写的&#xff0c;而在 Windows 系统上&#xff0c;文件名通常不区分大小写。导致在从 Linux 同步文件到 Windows 时&#xff0c;有些文件因为名称冲突而无法同步。为了有效解决这个问题&#xff0c;可以采取以下方法&#xff1a; …

.NET 轻量级、高效任务调度器:ScheduleTask

前言 至于任务调度这个基础功能&#xff0c;重要性不言而喻&#xff0c;大多数业务系统都会用到,世面上有很多成熟的三方库比如Quartz&#xff0c;Hangfire&#xff0c;Coravel 这里我们不讨论三方的库如何使用 而是从0开始自己制作一个简易的任务调度,如果只是到分钟级别的粒…

vue2 案例入门

vue2 案例入门 1 vue环境2 案例2.1 1.v-text v-html2.2 v-bind2.3 v-model2.4 v-on2.5 v-for2.6 v-if和v-show2.7 v-else和v-else-if2.8 计算属性和侦听器2.9 过滤器2.10 组件化2.11 生命周期2.12 使用vue脚手架2.13 引入ElementUI2.13.1 npm方式安装2.13.2 main.js导入element…

本地源码方式部署启动MaxKB知识库问答系统,一篇文章搞定!

MaxKB 是一款基于 LLM 大语言模型的知识库问答系统。MaxKB Max Knowledge Base&#xff0c;旨在成为企业的最强大脑。 开箱即用&#xff1a;支持直接上传文档、自动爬取在线文档&#xff0c;支持文本自动拆分、向量化、RAG&#xff08;检索增强生成&#xff09;&#xff0c;智…

YOLOv5改进 | 注意力机制 | 添加全局注意力机制 GcNet【附代码+小白必备】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 非局部网络通过将特定于查询的全局上下文聚合到每个查询位置&#xff0c;为捕获长距离依赖关系提供了一种开创性的方法。然而&#xff0c;通…

Android 13 高通设备热点低功耗模式

需求: Android设备开启热点,使Iphone设备连接,自动开启低数据模式 低数据模式: 低数据模式是一种在移动网络或Wi-Fi环境下,通过限制应用程序的数据使用、降低数据传输速率或禁用某些后台操作来减少数据流量消耗的优化模式。 这种模式主要用于节省数据流量费用,特别是…

Github Page 部署失败

添加 .gitmodules 文件 [submodule "themes/ayer"]path themes/ayerurl https://github.com/Shen-Yu/hexo-theme-ayer.git 添加 .nojekyll 文件

使用 Orange Pi AIpro开发板基于 YOLOv8 进行USB 摄像头实时目标检测

文章大纲 简介算力指标与概念香橙派 AIpro NPU 纸面算力直观了解 手把手教你开机与基本配置开机存储挂载设置风扇设置 使用 Orange Pi AIpro进行YOLOv8 目标检测Pytorch pt 格式直接推理NCNN 格式推理 是否可以使用Orange Pi AIpro 的 NPU 进行推理 呢&#xff1f;模型开发流程…

vue 微信公众号定时发送模版消息

目录 第一步&#xff1a;公众号设置 网页授权第二步&#xff1a;引导用户去授权页面并获取code第三步&#xff1a;通过code换取网页授权access_token&openid第四步&#xff1a;后端处理绑定用户和发送消息 相关文档链接&#xff1a; 1、微信开发文档 2、订阅号/服务号/企业…

AI生成视频解决方案,降低成本,提高效率

传统的视频制作方式往往受限于高昂的成本、复杂的拍摄流程以及硬件设备的限制&#xff0c;为了解决这些问题&#xff0c;美摄科技凭借领先的AI技术&#xff0c;推出了全新的AI生成视频解决方案&#xff0c;为企业带来前所未有的视觉创新体验。 一、超越想象的AI视频生成 美摄…

【计算机视觉(4)】

基于Python的OpenCV基础入门——色彩空间转换 色彩空间简介HSV色彩空间GRAY色彩空间色彩空间转换 色彩空间转换代码实现: 色彩空间简介 色彩空间是人们为了表示不同频率的光线的色彩而建立的多种色彩模型。常见的色彩空间有RGB、HSV、HIS、YCrCb、YUV、GRAY&#xff0c;其中最…

Sora,数据驱动的物理引擎

文生视频技术 Text-to-Video 近日&#xff0c;Open AI发布文生视频模型Sora&#xff0c;能够生成一分钟高保真视频。人们惊呼&#xff1a;“真实世界将不再存在。” Open AI自称Sora是“世界模拟器”&#xff0c;让“一句话生成视频”的AI技术向上突破了一大截&#xff0c;引…

数据恢复与取证软件: WinHex 与 X-Ways Forensics 不同许可证功能区别

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复公司&#xff0c;提供数据恢复实验室建设方案&#xff0c;包含数据恢复硬件设备及…

外贸仓库管理软件:海外仓效率大幅度提升、避免劳动力积压

随着外贸业务的不断发展&#xff0c;如何高效管理外贸仓库&#xff0c;确保货物顺利流转&#xff0c;订单顺利处理&#xff0c;就变得非常重要。 现在通常的解决方案都是通过引入外贸仓库管理软件&#xff0c;也就是我们常说的海外仓WMS系统来解决。 今天我们就系统的探讨一下…

闲话 .NET(3):.NET Framework 的缺点

前言 2016 年&#xff0c;微软正式推出 .NET Core 1.0&#xff0c;并在 2019 年全面停止 .NET Framework 的更新。 .NET Core 并不是 .NET Framework 的升级版&#xff0c;而是一个从头开始开发的全新平台&#xff0c;一个跟 .NET Framework 截然不同的开源技术框架。 微软为…