File-一个IO流中至关重要的类

news2024/11/12 5:01:18

File类

  • 概述:文件和目录路径名的抽象表示,File 对象就代表一个路径
    • 对与File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来要通过具体的操作把这个路径的内容转换为具体存在的。

常用方法

  • 构造方法

    方法作用
    File(String pathname)通过给定路径名-字符串转换为抽象路径名来创建新的File实例
    File(String parent , String child)从父路径名字符串和子路径名字符串创建新的File实例
    File(File parent , String child)从父抽象路径名和子路径名字符串创建新的File实例
    public class Test{
        public static void main(String[] args){
            // 1、通过给定路径名-字符串转换为抽象路径名来创建新的File实例
            File f1 = new File("D:\\a.txt");
            File f2 = new File("D:\\music");
            // 2、从父路径名字符串和子路径名字符串创建新的File实例
            File f3 = new File("D:\\a","b.txt");
            // 3、从父抽象路径名和子路径名字符串创建新的File实例
            File f4 = new File(f2 , "c.mp4");
        }
    }
    
  • 创建方法

    方法作用
    public boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件(文件存在,返回true。不存在返回 false)
    public boolean mkdir()创建由此抽象路径名命名的目录(文件夹)
    public boolean mkdirs()创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录(创建多级目录)

    注意:

    ①:创建文件的时候,要确保上级目录存在,才可以创建成功

    public class Test{
        public static void main(String[] args) throws IOException {
            // 1、创建一个文件对象,其实就是创建 一个路径的 对象
            File f1 = new File("D:\\a.txt");   				// 文件对象
            File f2 = new File("D:\\b");					// 单级文件夹对象
            File f3 = new File("D:\\c\\d");					// 多级文件夹对象
            // 2、创建文件(就是在磁盘中创建这个路径的文件或者文件夹)
            boolean a = f1.createNewFile();
            boolean b = f2.mkdir();
            boolean c = f3.mkdirs();
            System.out.println(a +" " + b +" " +  c);
        }
    }
    

  • 删除方法

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

    注意:删除文件的时候,要确保文件夹里没有文件,才可以删除文件夹成功

    public class Test2 {
        public static void main(String[] args) {
            // 1、创建文件对象
            File f1 = new File("D:\\a.txt");   				// 文件对象
            File f2 = new File("D:\\c");					    // 单级文件夹对象
            // 2、删除文件(从磁盘中删除)
            boolean a = f1.delete();
            boolean b = f2.delete();
            System.out.println(a + " " + b);
        }
    }
    

    运行结果:true false ,并且 D盘下 的 a.txt 已经删除(直接从电脑删除,不放入回收站),但是第二个是 false 是因为,我们代码上方的注意事项,c 文件夹下还有 d 文件夹,所以删除失败!

  • 判断和获取方法

    方法作用
    public boolean isDirectory()判断此抽象路径名表示的File是否为目录
    public boolean isFile()判断此抽象路径名表示的File是否为文件
    public boolean exists()判断此抽象路径名表示的File是否存在
    public String getAbsolutePath()返回此抽象路径名的绝对路径名字符串
    public String getPath()将此抽象路径名转换为路径名字符串
    public String getName()返回此抽象路径名表示的文件或目录的名称
    public String[] list()返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
    public File[] listFiles()返回此抽象路径名表示的目录中的文件和目录的File对象数组
    public class Test {
        public static void main(String[] args) {
            // 1、创建一个文件对象,其实就是创建 一个路径的 对象
            File f1 = new File("D:\\a.txt");   				// 文件对象
            File f2 = new File("D:\\b");					    // 单级文件夹对象
            File f3 = new File("D:\\c\\d");                    // 多级文件夹对象
            File f4 = new File("D:\\c");
            // 2、判断此抽象路径名表示的File是否为文件和目录(文件夹)
            boolean a = f1.isFile();
            boolean b = f2.isDirectory();
            // 3、判断此抽象路径名表示的File是否存在
            boolean c = f1.exists();
            // 4、返回此抽象路径名的绝对路径名字符串
            String f3Path = f3.getAbsolutePath();
            // 5、将此抽象路径名转换为路径名字符串
            String path = f3.getPath();
            // 6、返回此抽象路径名表示的文件或目录的名称
            String name = f1.getName();
    
            System.out.println(a + " " + b + " " + c);
            System.out.println(f3Path);
            System.out.println(path);
            System.out.println(name);
    
            // 7、返回此抽象路径名表示的目录中的文件和目录的名称字符串数组
            String[] list = f4.list();
            for (String s : list) {
                System.out.println(s);
            }
            // 8、返回此抽象路径名表示的目录中的文件和目录的File对象数组
            File[] files = f4.listFiles();
            for (File file : files) {
                System.out.println(file);
            }
        }
    }
    

    运行结果

    false true false
    D:\c\d
    D:\c\d
    a.txt
    d
    D:\c\d


绝对路径和相对路径

  • 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件
  • 相对路径:必须使用取自其他路径名的信息进行解释(必须要有个参考物)

案例

  • 需求:在D盘下创建一个四级目录,以 a b c d 字母顺序创建,并且在 d 目录下 创建文件 e.mp4 和 f.txt(创建文件时,需要先去判断此文件是否存在)。最后遍历输出 a 文件夹下所有 文件的名字。并且遍历时,删除后缀为 .txt 的文件?

  • 思路分析:

    • 首先需要创建四个 文件对象
    • 创建 两个文件
    • 其次遍历 a 文件夹,并输出所有文件的名字
    • 最后,在遍历的时候,判断后缀是否为 .txt ,是的话,执行删除
    public class Test {
        // 创建文件对象方法
        public static void createFile(File f){
            // 首先判断文件是否存在
            if(!f.exists()){
                // 不存在,创建文件
                try {
                    f.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        // 遍历文件,并删除后缀是 .txt 的文件
        public static void showAndDel(File f){
            // 判断是文件还是文件夹
            if(f.isDirectory()){
                File[] files = f.listFiles();               // 获取当前文件对象下的所有文件对象
                for (File file : files) {                   // 遍历输出名字,并继续递归向下
                    System.out.println(file.getName());
                    showAndDel(file);
                }
            }else{
                if(f.getName().endsWith(".txt")){           // 判断后缀是否是 .txt 是,执行删除
                    f.delete();
                }
            }
        }
        public static void main(String[] args) {
            // 1、创建 4 个对象
            File f1 = new File("D:\\a\\b\\c\\d");
            File f2 = new File("D:\\a");
            File f3 = new File(f1 , "e.mp4");
            File f4 = new File(f1 , "f.txt");
            // 2、磁盘创建 文件和文件夹
            f1.mkdirs();
            createFile(f3);
            createFile(f4);
            // 3、遍历删除
            showAndDel(f2);
        }
    }
    

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

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

相关文章

构建高效PythonWeb:GraphQL+Sanic

1.1 简介:在当今快速发展的技术时代,Web应用的性能和灵活性变得越来越重要。在众多技术中,GraphQL和Sanic以其独特的优势脱颖而出。GraphQL,作为一个强大的数据查询语言,为前端和后端之间的通信提供了极大的灵活性。而…

HCIA-Datacom题库(自己整理分类的)_09_Telent协议【13道题】

一、单选 1.某公司网络管理员希望能够远程管理分支机构的网络设备,则下面哪个协议会被用到? RSTP CIDR Telnet VLSM 2.以下哪种远程登录方式最安全? Telnet Stelnet v100 Stelnet v2 Stelnet v1 解析: Telnet 明文传输…

Oracle-expdp备份变慢问题分析

问题背景: 应用有一个每日跑批之前的备份作业,通过expdp备份应用的用户数据,数据量大概为600G左右,正常情况下可以在20分钟内跑完,但最近expdp备份完成时间却突然猛涨到要2小时32分才能备份完,导致后续的跑…

使用 MONAI 加载和保存各种格式的医学图像

本教程属于实战,手把手教你加载各种医学图像数据(nii.gz, .dcm, .png等)。并学会查看医学图像数据的元数据(shape, affine, orientation)。学会使用monai全方位了解你的数据,并把它用于之后的深度学习训练。…

最新ChatGPT网站系统源码+详细搭建部署教程+Midjourney绘画AI绘画

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

数据版本控制利器LakeFS的介绍,以及其使用方法,与其它工具结合案例

LakeFS介绍 LakeFS 是一个开源的数据湖版本控制系统,可以帮助用户管理和控制数据湖中的数据版本。以下是LakeFS的一些主要用处和功能介绍: 数据版本控制:LakeFS 提供了类似于 Git 的版本控制功能,可以跟踪和管理数据湖中的数据版…

智能合约:3分钟开发ERC20 token(2)

0.前言 上一节我们讲到了开发智能合约的准备工作,以及在线编程平台remix 智能合约(1) 这一节讲解如何开发、发行一个代币,并具备包括代币铸造mint,转账transfer和销毁burn功能,并确保合约拥有者owner的权限…

HEVC 视频扩展安装包,WIN10上看苹果的照片格式

苹果手机照片放电脑上,后缀名称.HEIC,打开居然要下载 HEVC 视频扩展包才能查看,网盘找到一个记录一下,安装后就可以查看苹果手机照片了。 链接:https://pan.baidu.com/s/13ye9_6brXD32jWAjfS47gQ?pwd36k5 提取码&am…

vue结合Cesium加载gltf模型

Cesium支持什么格式? Cesium支持的格式包括:3D模型格式(如COLLADA、gITF、OBJ)、影像格式(如JPEG、PNG、GeoTIFF)、地形格式(如STL、Heightmap)、矢量数据格式(如GeoJSON…

[AutoSar]基础部分 RTE 05 Port的实例化和初始化

目录 关键词平台说明一、端口类型二、端口的实例化2.1 创建application port2.2 实例化 三、初始化 关键词 嵌入式、C语言、autosar、Rte 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C,C编译器HighTec (GCC) 一、端口类型 如下图所示&am…

java 生成一个当前时间的时间搓

开发过程中 用时间搓数值格式存储 会更加精准 那么 我们在一些日常增删查改中就可以用时间搓来记录操作时间 就一行代码 long timestamp System.currentTimeMillis();他就能生成当前时间的时间搓 运行结果如下 然后 我们可以在 http://shijianchuo.wiicha.com/ 上进行转换查…

YOLOv5改进 | 注意力篇 | ACmix注意力与卷积混合的模型(轻量化注意力机制)

一、本文介绍 本文给大家带来的改进机制是ACmix自注意力机制的改进版本,它的核心思想是,传统卷积操作和自注意力模块的大部分计算都可以通过1x1的卷积来实现。ACmix首先使用1x1卷积对输入特征图进行投影,生成一组中间特征,然后根据不同的范式,即自注意力和卷积方式,分别…

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图

【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax概述 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax快速入门 【大数据进阶第三阶段之Datax学习笔记】阿里云开源离线同步工具Datax类图 【大数据进阶第三阶段之Datax学习笔记】使用…

2024--Django平台开发-Django知识点(四)

1.知识回顾 创建项目&#xff1a;新项目、别人项目、新版版、老版本 项目目录&#xff08;v1.0版本&#xff09; 路由系统 常见路由编写加粗样式 /index/ 函数 /index/<str:v1> 函数 re_path(ryy/(\d{4})-(\d{2})-(\d{2})/, views.yy), re_path(ryy/(?…

2024新年烟花代码完整版

文章目录 前言烟花效果展示使用教程查看源码HTML代码CSS代码JavaScript 新年祝福 前言 在这个充满希望和激动的2024年&#xff0c;新的一年即将拉开帷幕&#xff0c;而数字科技的创新与发展也如火如荼。烟花绚丽多彩的绽放&#xff0c;一直以来都是新年庆典中不可或缺的元素。…

Spring之代理模式

1、概念 1.1 介绍 二十三种设计模式中的一种&#xff0c;属于结构型模式。它的作用就是通过提供一个代理类&#xff0c;让我们在调用目标方法的时候&#xff0c;不再是直接对目标方法进行调用&#xff0c;而是通过代理类间接调用。让不属于目标方法核心逻辑的代码从目标方法中…

鸿蒙开发基础运用(ArkTS)-健康生活APP

健康生活应用&#xff0c;主要功能包括&#xff1a; 用户可以创建最多6个健康生活任务&#xff08;早起&#xff0c;喝水&#xff0c;吃苹果&#xff0c;每日微笑&#xff0c;刷牙&#xff0c;早睡&#xff09;&#xff0c;并设置任务目标、是否开启提醒、提醒时间、每周任务频…

2024拜年祝福视频AE模板31套

做短视频必备的AE模板非常好看&#xff0c;跨年做个视频非常漂亮&#xff0c;喜欢的赶紧保存吧&#xff01; 链接&#xff1a;https://pan.quark.cn/s/fc1f3db12049

回首2023,厉兵秣马,启航2024

目录 回首风波的20232023&#xff0c;感恩相遇暂停发文发文狂潮感恩有你备战2024学习之余跆拳道比赛做手工diy 学习心路年初学习伊始心路其后学习后来心路 必须看配图说明 未知的2024Flag 回首风波的2023 2023&#xff0c;感恩相遇 还记得&#xff0c;22年末&#xff0c;23年…

Anaconda下载安装与使用

前言 Pandas之所以被称为工具包&#xff0c;原因是Pandas这个工具是由不同的代码模块组成的。每一个代码模块的功能不同&#xff0c;合在一起构成Pandas的丰富功能。其他工具包亦然。 名称描述NumpyNumpy是通用的数值计算工具包&#xff0c;包含大量数学计算函数和矩阵运算函数…