Java基础之File

news2025/1/18 7:20:08

文章目录

    • 一、File的声明
    • 二、File的创建
      • 2.1 创建一个文件
      • 2.2 创建一个文件夹
      • 2.3 创建一个多级文件夹
    • 三、File的删除
    • 四、File的获取与判断
      • 4.1 获取一个文件夹孩子层所有文件和文件夹,并存入数组
      • 4.2 判断一个File对象是否为文件
      • 4.3 判断一个File对象是否为文件夹
      • 4.4 判断一个File对象是否存在
      • 4.5 获取当前File对象的全名(包括后缀名)
    • 五、File案列练习(根据文件类型分类)

一、File的声明

声明的File不需要是存在的,我们声明的路径可以是存在的,也可以是不存在的。因为我们只是声明,并不一定会用。

方法名说明
File(String pathname)通过给定的字符串路径指明一个File文件(或者文件夹)
File(String parent,String child)通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
File(File parent,String child)实际上也是通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
public static void main(String[] args) {
        //通过给定的字符串路径指明一个File文件(或者文件夹)
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa.txt");

        //通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
        File file1=new File("D:\\Code\\ideaCode\\FileTestDemo","aa.txt");

        String path1="D:\\Code\\ideaCode\\FileTestDemo";
        String path2="aa.txt";
        File file2=new File(path1,path2);

        String path3="D:\\Code\\ideaCode\\FileTestDemo";
        File file3=new File(path3,"aa.txt");

        String path4="aa.txt";
        File file4=new File("aa.txt",path4);

        //实际上也是通过两个字符串拼接形成最终字符串路径,指明一个File文件(或者文件夹)
        File file5=new File("D:\\Code\\ideaCode\\FileTestDemo");
        String path5="aa.txt";
        File file6=new File(file3,path5);
    }

二、File的创建

方法名说明
boolean createNewFile()创建一个文件
boolean mkdir()创建一个文件夹
boolean mkdirs创建一个多级文件夹

2.1 创建一个文件

我们在这里创建一个aa.txt文本文件,初始无aa.txt文件存在

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明一个文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa.txt");
        //创建文件(若文件已存在,则返回false,否则返回true)
        boolean newFile = file.createNewFile();
        System.out.println(newFile);
    }

运行结果:
在这里插入图片描述


2.2 创建一个文件夹

我们在这里创建一个名为bb的单级文件夹,初始无bb单级文件夹存在

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明一个单级文件夹
        File file1=new File("D:\\Code\\ideaCode\\FileTestDemo\\bb");
        //创建单级文件夹(若文件夹已存在,则返回false,否则返回true)
        boolean mkdir = file1.mkdir();
        System.out.println(mkdir);
    }

运行结果:

在这里插入图片描述


2.3 创建一个多级文件夹

我们在这里创建一个名为cc的多级文件夹,初始无cc多级文件夹存在

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明一个多级文件夹
        File file2=new File("D:\\Code\\ideaCode\\FileTestDemo\\cc\\aa\\bb\\dd\\ee");
        //创建多级文件夹
        boolean mkdirs = file2.mkdirs();
        System.out.println(mkdirs);
    }

运行结果:

在这里插入图片描述


三、File的删除

调用delete()方法仅能删除文件和空文件夹,若一个文件夹中含有文件或者文件夹,则需要将文件夹中的文件和文件夹清空,使之成为空文件夹才能将之删除。

方法名说明
boolean delete()删除一个文件或者空文件夹

删除我们刚刚创建的bb空文件夹

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明bb文件夹
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\bb");
        //调用delete()方法删除bb空文件夹
        boolean delete = file.delete();
        System.out.println(delete);
    }

运行结果:
在这里插入图片描述


删除我们刚刚创建的aa.txt文件

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明aa.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa.txt");
        //调用delete()方法删除aa.txt文件
        boolean delete = file.delete();
        System.out.println(delete);
    }

运行结果:
在这里插入图片描述


删除我们刚刚创建的cc多级文件夹(直接调用delete()方法无法删除cc多级文件夹,因为cc多级文件夹并不是空文件夹)

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明cc多级文件夹
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\cc");
        //调用delete()方法无法直接删除cc多级文件夹
        boolean delete = file.delete();
        System.out.println(delete);
    }

运行结果:
在这里插入图片描述


四、File的获取与判断

方法名说明
File[] listFiles()获取一个文件夹孩子层所有文件和文件夹,并存入数组
boolean isFile()判断一个File对象是否为文件
boolean isDirectory()判断一个File对象是否为文件夹
boolean exists()判断一个File对象是否存在
String getName()获取当前File对象的全名(包括后缀名)

4.1 获取一个文件夹孩子层所有文件和文件夹,并存入数组

我们来遍历一个aa非空文件夹,aa非空文件夹孩子层所有文件及文件夹如下图所示:

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明aa非空文件夹
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa");

        //调用listFiles()方法获取aa文件夹孩子层所有文件和文件夹
        File[] files = file.listFiles();
        //使用forEach()语句遍历File数组
        for (File file1 : files) {
            System.out.println(file1);
        }
    }

运行结果:
在这里插入图片描述


4.2 判断一个File对象是否为文件

我们先来判断aa.txt它是不是一个文件

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明aa.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa.txt");

        //调用isFile()方法判断对象是否为文件
        boolean file1 = file.isFile();
        System.out.println(file1);
    }

运行结果:
在这里插入图片描述


我们再来判断bb.txt它是不是一个文件(无意外,它不是一个文件)

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明bb.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\bb.txt");

        //调用isFile()方法判断对象是否为文件
        boolean file1 = file.isFile();
        System.out.println(file1);
    }

运行结果:
在这里插入图片描述


4.3 判断一个File对象是否为文件夹

我们来判断bb.txt它是不是一个文件夹。

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明bb.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\bb.txt");

        //调用isDirectory()方法判断对象是否为文件夹
        boolean directory = file.isDirectory();
        System.out.println(directory);
    }

运行结果:
在这里插入图片描述


4.4 判断一个File对象是否存在

exists()方法可以判断一个File对象是否存在(不论是文件还是文件夹均可判断),我们声明一个虚假的cc.txt文件,来判断它是否存在。结果为不存在。

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明cc.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\cc.txt");

        //调用exists()方法判断File对象是否存在
        boolean exists = file.exists();
        System.out.println(exists);
    }

运行结果:
在这里插入图片描述


4.5 获取当前File对象的全名(包括后缀名)

public static void main(String[] args) throws IOException {
        //声明cc.txt文件
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\cc.txt");

        //调用getName()方法获取当前File对象的全名(包括后缀名)
        String name = file.getName();
        System.out.println(name);
    }

运行结果:
在这里插入图片描述


五、File案列练习(根据文件类型分类)

获取一个非空文件夹孩子层所有文件及文件夹,并按照后缀名来对它们进行划分,并统计各个类型文件数量(因此我们无需查看文件夹,只需查看孩子层文件即可)

在这里插入图片描述


public static void main(String[] args) throws IOException {
        //声明aa非空文件夹
        File file=new File("D:\\Code\\ideaCode\\FileTestDemo\\aa");
        //创建Key值类型为String,Value值类型为Integer的Map集合,其中Key表示文件类型,Value表示此文件类型的数量
        Map<String,Integer> map=new HashMap<>();
        //调用listFiles()方法读取aa非空文件夹孩子层所有文件及文件夹
        File[] files = file.listFiles();
        //遍历File数组
        for (File file1 : files) {
            //若此对象为文件,对它文件类型进行划分
            if(file1.isFile()){
                //获取此文件全名(包括后缀名)
                String nameAll=file1.getName();
                //将文件名按"."进行分割,存入String数组中
                String[] nameArr=nameAll.split("\\.");
                //获取文件后缀名(文件的后缀名一定为最末尾元素)
                String nameLast=nameArr[nameArr.length-1];
                //如果集合中存在此文件类型
                if(map.containsKey(nameLast)){
                    //通过文件类型获取此文件类型的数量
                    int count=map.get(nameLast);
                    //数量加1
                    count++;
                    //更新文件类型的数量
                    map.put(nameLast,count);
                }else{
                    //若集合中不存在此文件类型,则将此文件类型存入集合中,数量为1
                    map.put(nameLast,1);
                }
            }
        }

        //普通方法输出集合
        System.out.println(map);
    }

运行结果:
在这里插入图片描述


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

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

相关文章

Abp框架安全升级指南

本文将从GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》规定的安全计算环境中解读、摘要若干安全要求&#xff0c;结合Abp框架&#xff0c;对站点进行安全升级。 【身份鉴别】应对登录的用户进行身份标识和鉴别&#xff0c;身份标识具有唯一性&#xff0c;身份鉴别…

实验手册 - 第2周Spark RDD

目录标题1 实验内容实验1实验2实验3实验4实验5实验62 实验总结2.1 Spark应用开发步骤2.2 字符串的split()方法列表解析式2.3 常用的Action操作2.4 常用的Transformation操作2.5 RDD间的Transformation操作1 实验内容 查看当前工作目录 import os os.getcwd()D:\\juniortwo\\s…

【JUC】Java内存模型之JMM

【JUC】Java内存模型之JMM 文章目录【JUC】Java内存模型之JMM1. 概念2. JMM三大特性2.1 可见性2.2 原子性2.3 有序性3. 多线程对变量的读写过程4. 先行发生原则——happens-before4.1 happens-before八条规则4.1.1 次序规则4.1.2 锁定规则4.1.3 volatile变量规则4.1.4 传递规则…

【Unity入门】13.脚本外置参数

【Unity入门】脚本外置参数 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;外置脚本参数 &#xff08;1&#xff09;外置自转脚本的速度参数 我们在RotateLogic的时候&#xff0c;为了实现自…

ubuntu虚拟机下搭建zookeeper集群,安装jdk压缩包,搭建Hadoop集群与spark集群的搭建【下篇】

系列文章目录 Hadoop与主机连接以及20版本的Hadoop配置网络的问题_hadoop连不上网 Hadoop升级update命令被锁定的解决方法_hadoop重新初始化被锁住怎么办虚拟机vmware下安装Ubuntu16.04修改屏幕尺寸与更新源&#xff0c;以及对应的安装vim和vim常见的操作命令 文章目录 前言…

ELK部署-实现Nginx日志收集

一、部署ES 1、创建网络下载镜像 docker network create elastic docker pull elasticsearch:7.17.62、目录准备 mkdir /opt/ELK/elastic/{data,config} -p chmod 777 /opt/ELK/elastic/datacat >> /opt/ELK/elastic/config/elasticsearch.yml <<EOF cluster.na…

DFS与BFS寻找图中的所有路径(C++)

文章目录图的存储理论知识数组模拟链表数组模拟邻接表DFS 寻找所有路径代码输入数据对应图输出BFS 寻找所有路径代码输入数据对应图输出备注写在后面图的存储 理论知识 图的存储主要有 2 种方式 邻接表邻接矩阵 邻接矩阵不适合存储稀疏图&#xff0c;本文使用邻接表来存储图 …

运用Navicat 实现 DML(对表的数据进行增删改)

如何使用Navicat呢&#xff1f; 当Navicat配置好后&#xff0c;链接上数据库后。 点击查询后tables中的任意一个新建查询&#xff0c;这时就会跳出一个查询编辑器。 我在初始sql是就创建了stu表。这里就不创建了。 先选择需要的表&#xff0c; select * from 表名; 添加&…

【JAVA】经典面试题:HashMap,Hashtable和ConcurrentHashMap三者之间的区别!!!

本篇的内容是围绕哈希表来展开的&#xff0c;主要是通对HashMap&#xff0c;Hashtable&#xff0c;ConcurrentHashMap三者的特点去了解这它们之间的区别以及运用场景 目录 1. HashMap 2. Hashtable 锁太粗问题&#xff1a; 3. 扩容机制问题 3. ConcurrentHashMap Concurr…

N5183B信号发生器

N5183B N5183B,是德keysight N5183B 主要特性与技术指标信号特征9 kHz &#xff5e; 3 或 6 GHz在 3 GHz 时提供 24 dBm 功率&#xff0c;带有电子衰减器1 GHz 和 20 kHz 偏置时&#xff0c;相位噪声为 -146 dBc≤-73 dBc ACP W-CDMA 64 DPCH 和 <0.4% EVM 160 MHz 802.11…

万字长文解读Stable Diffusion的核心插件—ControlNet

目录 一、介绍 二、使用方法 三、ControlNet结构 1.整体结构 2.ControlLDM 3.Timestep Embedding 4.HintBlock 5.ResBlock 6.SpatialTransformer 7.SD Encoder Block 8.SD Decoder Block 9.ControlNet Encoder Block 10.Stable Diffusion 四、训练 1.准备数据集…

stable-diffusion-webui浅叙

GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI 使用Git下载&#xff1a; git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git 运行 webui-user.bat : git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.g…

【NestJs】使用MySQL创建多个实体

如果小伙伴还不会使用nestjs连接数据库的话 可以看我的上一篇文章 NestJs使用连接mysql企业级开发规范 关系 关系是指两个或多个表之间的联系。关系基于每个表中的常规字段&#xff0c;通常包含主键和外键。关系有三种&#xff1a; 名称说明一对一主表中的每一行在外部表中有…

从零到一发布 NPM 包

如果你负责前端的基础能力建设&#xff0c;发布各种功能/插件包犹如家常便饭&#xff0c;所以熟悉对 npm 包的发布与管理是非常有必要的&#xff0c;故此有了本篇总结文章。本篇文章一方面总结&#xff0c;一方面向社区贡献开箱即用的 npm 开发、编译、发布、调试模板&#xff…

【展会邀请】百华与您相约第104届中国劳动保护用品交易会!

重磅消息&#xff01;一场行业极具规模的劳保展 第104届中国劳动保护用品交易会 暨2023中国国际职业安全及健康产业博览会 将于2023.4.13-15在上海新国际博览中心E1-E7馆隆重举办&#xff01; 山东百华鞋业有限公司受邀参展&#xff0c;正在火热筹备中。 百华展位号 2023…

算法:将一个数组旋转k步

题目 输入一个数组如 [1,2,3,4,5,6,7]&#xff0c;输出旋转 k 步后的数组。 旋转 1 步&#xff1a;就是把尾部的 7 放在数组头部前面&#xff0c;也就是 [7,1,2,3,4,5,6]旋转 2 步&#xff1a;就是把尾部的 6 放在数组头部前面&#xff0c;也就是 [6,7,1,2,3,4,5]… 思路 思…

PasteSpider的下载和安装

你是否在纠结于k8s的庞大和复杂&#xff0c;是否在被混论的发布流程搞得焦头烂额。PasteSpider适合你&#xff01;足够小的内存资源消耗(300MB甚至更低&#xff01;)&#xff0c;不需要专业的运维知识&#xff0c;图文操作&#xff0c;支持一键发布&#xff0c;支持自动路由配置…

泛型基本说明

使用传统方法的问题分析 不能对加入到集合ArrayList中的数据类型进行约束&#xff08;不安全&#xff09;遍历的时候&#xff0c;需要进行类型转换&#xff0c;如果集合中的数据量较大&#xff0c;对效率有影响。泛型的好处 编译时&#xff0c;检查添加元素的类型&#xff0c;提…

springbean 的 setter/构造注入

文章目录前言一、另外两种注入的怎么用&#xff1f;二、使用setter和构造注入的步骤1. 搞一个配置类,用户获取spring容器中的bean2. 由于有静态方法,所以直接调用三、使用final 的构造注入方式(推荐)总结前言 我们知道,一般java中的依赖注入有三种: 1 属性注入 2 settter注入 …

Golang每日一练(leetDay0039) 二叉树专题(8)

目录 115. 不同的子序列 Distinct Subsequences &#x1f31f;&#x1f31f;&#x1f31f; 116. 填充每个节点的下一个右侧节点指针 Populating-next-right-pointers-in-each-node &#x1f31f;&#x1f31f; 117. 填充每个节点的下一个右侧节点指针 II Populating-next-ri…