File 类 (文件|文件夹操作)
一、File 类
1.1 前言
在 JDK 中 通过 java.io.File 类,可以实现操作系统重文件|文件夹的创建、删除、查看、重命名等操作。
1.2 File 类构造方法

File 一共提供了四个构造方法,都是有参构造。其中最常使用的是 File(String) 和 File(String, String) 和File(File, String)
- File(String):参数表示文件或文件夹全路径
- File(String, String):第一个参数表示父文件夹路径,第二个参数表示资源路径
- File(File, String):第一个参数表示父文件夹对象,第二个参数表示资源路径
1.3 创建文件夹
File 中有两个方法能够创建文件夹
- mkDir():创建路径中最后一层文件夹。如果希望创建的文件夹已经存在或者路径中前面的问价不存在,返回 false。
- mkDirs():创建文件夹,如果路径中的文件夹不存在,先创建路径中的文件夹,然后再创建指定的文件夹。返回值表示是否创建成功
代码示例
public static void main(String[] args) {File file = new File("D:/a/b");//只会创建b, 如果a不存在创建失败boolean mkdir = file.mkdir();System.out.println(mkdir);File file1 = new File("D:/c/d");//c不存在会先创建c再创建dboolean mkdirs = file1.mkdirs();System.out.println(mkdirs);
}
1.4 判断资源是否存在
exists():判断资源是否存在,存在返回 true,不存在返回 false
代码块:
public static void main(String[] args) {File file = new File("D:/io");if (file.exists()) {System.out.println("D盘中没有io文件夹");}else {System.out.println("D盘中存在io文件夹");}
}
1.5 创建空文件
createNewFile() 方法可以创建一个空文件,要求文件所在目录必须真实存在。
JDK 在定义这个方法时抛出了 IOException(Checked异常),文件路径不正确、无法操作文件等情况下抛出此异常。返回值表示创建成功。
public boolean createNewFile() throws IOException {SecurityManager security = System.getSecurityManager();if (security != null) security.checkWrite(path);if (isInvalid()) {throw new IOException("Invalid file path");}return fs.createFileExclusively(path);
}
代码示例
public static void main(String[] args) {try {File file = new File("D:/io/a.txt");boolean newFile = file.createNewFile();System.out.println(newFile);} catch (IOException e) {e.printStackTrace();}
}
1.5.1 结果一
设定计算机中 D 盘下没有 io 文件夹。程序运行会出现异常。

1.5.2 为了防止新建文件时因为目录不存在报异常,可以结合 exists() 和 mkDirs() 方法保证程序的稳定运行
public static void main(String[] args) {try {File parent = new File("D:/io");if (!parent.exists()) {parent.mkdirs();}File file = new File(parent, "a.txt");boolean newFile = file.createNewFile();System.out.println(newFile);} catch (IOException e) {e.printStackTrace();}
}
1.6 重命名文件
renameTo(File) 剪切。利用剪切特性,把资源剪切后放入到原路径中,起信命,实现重命名功能。
public static void main(String[] args) {File file = new File("D:/io/a.txt");boolean b = file.renameTo(new File("D:/io/b.txt"));System.out.println(b);
}
1.7 删除文件
delete() 可以实现删除文件。如果文件删除成功返回 true。如果文件不存在或删除失败返回 false
public static void main(String[] args) {File file = new File("D:/io/a.txt");boolean delete = file.delete();System.out.println(delete);
}
1.8 判断资源是否为文件
isFile() 判断资源是否是文件。如果是文件 返回 true,如果是文件夹或不存在这个资源返回 false
public static void main(String[] args) {File file = new File("D:/io/a.txt");System.out.println(file.isFile());
}
1.9 查看文件名 和 文件路径
getName() 文件名。
**getAbsolutePath() ** 文件在磁盘中全路径。
**getPath() ** 创建文件时指定的路径
public static void main(String[] args) {File file = new File("abc/test.txt");System.out.println(file.getName()); //test.txtSystem.out.println(file.getAbsolutePath()); //D:\ideaws\abc\test.txtSystem.out.println(file.getPath()); //abc\test.txt
}
1.10 查看目录中内容
list() 返回值为目录中资源的名称。返回值类型String[]。数组长度和资源个数相同。如果是空文件夹范围一个长度为0的数组对象。如果文件夹不存在返回null。
listFiles() 返回值为目录中资源对象。返回值类型File[]。数组长度和资源个数相同。如果是空文件夹范围一个长度为0的数组对象。如果文件夹不存在返回null。
public static void main(String[] args) {File file = new File("D:/io");//获取文件夹中资源名称String[] list = file.list();for (String s : list) {System.out.println(s);}//获取文件中资源对象File[] files = file.listFiles();for (File file1 : files) {System.out.println(file1);}
}
案例–打印目录结构
public static void main(String[] args) {//创建文件夹对象File file = new File("D:/io");//调用方法 参数1: 文件夹对象 参数2: 空格数量test(file, 0);
}
public static void test(File file, int length){File[] files = file.listFiles();for (File file1 : files) {if(file1.isFile()){for (int i = 0; i < length; i++) {System.out.print(" ");}System.out.println(file1.getName());}else {for (int i = 0; i < length; i++) {System.out.print(" ");}System.out.println(file1.getName());//递归调用test(file1, length+1);}}
}
相关文章:
File 类 (文件|文件夹操作)
一、File 类 1.1 前言 在 JDK 中 通过 java.io.File 类,可以实现操作系统重文件|文件夹的创建、删除、查看、重命名等操作。 1.2 File 类构造方法 File 一共提供了四个构造方法,都是有参构造。其中最常使用的是 File(String) 和 File(String, String)…...
Html页面Table表格导出导入Excel文件 xlsx.full
Html页面Table表格导出Excel文件 引用 xlsx.full.min.js 文件 导出 <!DOCTYPE html> <html> <head><meta charset"utf-8" /><title></title><script src"https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.j…...
【资料分享】瑞芯微RK3576,8核2.2GHz+6T算力NPU工业核心板说明书
核心板简介 创龙科技SOM-TL3576-S是一款基于瑞芯微RK3576J/RK3576高性能处理器设计的4核ARM Cor...
埃隆·马斯克如何通过开源创新塑造未来
李升伟 编译 埃隆马斯克的名字在多个行业回响——从电动汽车、太空探索到人工智能及更多领域。虽然许多人关注他革命性的公司(如特斯拉、SpaceX、Neuralink和The Boring Company),但较少有人意识到他在开源软件运动中悄然却深远的影响力。本…...
ALOPS智能化运维管理平台
AIOps(Artificial Intelligence for IT Operations)即智能运维,是将人工智能技术应用于 IT 运维管理领域,以实现自动化、智能化的运维决策和管理。以下是关于 AIOps 的详细介绍: 核心能力 数据收集与整合:…...
Hadoop文件操作指南:深入解析文件操作
1 Hadoop文件系统概述 Hadoop分布式文件系统(HDFS)是Hadoop生态的核心存储组件,专为大规模数据集设计,具有高容错性和高吞吐量特性。 HDFS核心特性: 分布式存储:文件被分割成块(默认128MB)分布存储多副本机制:每个块默认3副本&…...
使用Fortran读取HDF5数据
使用Fortran读取HDF5数据 下面我将介绍如何在Fortran中读取HDF5文件中的各种类型数组数据,包括一维数组、二维数组、元数组和变长数组。 准备工作 首先需要确保系统安装了HDF5库,并且在编译时链接了HDF5库。例如使用gfortran编译时: gfor…...
STM32 HAL库之EXTI示例代码
外部中断按键控制LED灯 在main.c中 HAL_Init(); 初始化Flash,中断优先级以及HAL_MspInit函数,也就是 stm32f1xx_hal.c 中 HAL_StatusTypeDef HAL_Init(void) {/* Configure Flash prefetch */ #if (PREFETCH_ENABLE ! 0) #if defined(STM32F101x6) || …...
通过C#将GB18030编码转义为UTF-8
使用C#代码,对于GB18030编码转义为UTF-8格式。 using System.Text;public class FileEncodingConverter {// 支持转换的文件扩展名列表(可根据需求扩展)private static readonly string[] SupportedExtensions { ".sln", ".…...
《TCP/IP网络编程》学习笔记 | Chapter 23:IOCP
《TCP/IP网络编程》学习笔记 | Chapter 23:IOCP 《TCP/IP网络编程》学习笔记 | Chapter 23:IOCP通过重叠 I/O 理解 IOCPepoll 和 IOCP 的性能比较实现非阻塞模式的套接字以纯重叠 I/O 方式实现回声服务器端重新实现客户端测试从重叠 I/O 模型到 IOCP 模型…...
Java学习打卡-Day25-注解和反射、Class类
注解(JDK5引入) 什么是注解? Java注解(Annotation),也叫元数据。一种代码级别的说明,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面…...
电感、互感器、变压器和磁珠综合对比——《器件手册--电感/线圈/变压器/磁珠篇》
三、电感/线圈/变压器/磁珠 名称 定义 特点...
CAD导入arcgis中保持面积不变的方法
1、加载CAD数据,选择面数据,如下: 2、加载进来后,右键导出数据,导出成面shp数据,如下: 3、选择存储路径,导出面后计算面积,如下: 4、与CAD中的闭合线面积核对…...
rustdesk自建服务器怎么填写客户端配置信息
目录 # id、api、中继都怎么填?rustdesk程序启动后服务不自动启动 # id、api、中继都怎么填? rustdesk程序启动后服务不自动启动 完全退出RudtDesk程序(右下角托盘区有的话,需要右键点退出) 创建windows服务ÿ…...
c++进阶之----智能指针
1.概念 在 C 中,智能指针是一种特殊的指针类型,它封装了裸指针(raw pointer)的行为,并通过 RAII(Resource Acquisition Is Initialization,资源获取即初始化)机制自动管理动态分配的…...
六、测试分类
设计测试用例 万能公式:功能测试性能测试界面测试兼容性测试安全性测试易用性测试 弱网测试:fiddler上行速率和下行速率 安装卸载测试 在工作中: 1.基于需求文档来设计测试用例(粗粒度) 输入字段长度为6~15位 功…...
Apollo源码总结
官方课程 项目源码 源码库简介: 1.apollo:算法库 2.apollo-kernel:改进LINUX内核。添加实时性补丁。 3. apollo-platform:改进ROS系统。去中心化,增加共享内存通信方式,兼容protobuf。 4.apollo-contrib&am…...
电感详解:定义、作用、分类与使用要点
一、电感的基本定义 电感(Inductor) 是由导线绕制而成的储能元件,其核心特性是阻碍电流变化,将电能转化为磁能存储。 基本公式: 自感电动势: E -L * (di/dt) (L:电感值,…...
AI编程案例拆解|基于机器学习XX评分系统-前端篇
文章目录 1. 定价使用DeepSeek估价小红书调研 2. 确定工作事项利用DeepSeek生成具体工作事项 3. 和客户沟通约会议沟通确定内容样式 4. 前端部分设计使用DeepSeek生成UI设计在Cursor中生成并提问前置条件开始编程 关注不迷路,励志拆解100个AI编程、AI智能体的落地应…...
java数组06:Arrays类
Arrays类 数组的工具类java.util. Arrays 由于数组对象本身并没有什么方法可以供我们调用,但API中是了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本的操作。 查看JDK帮助文档 Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用…...
TQTT_KU5P开发板教程---实现流水灯
文档实现功能介绍 本文档是学习本开发板的基础,通过设置计数器使led0到led7依次闪烁,让用户初步认识vivado基本的开发流程以及熟悉项目的创建。本开发板的所有教程所使用的软件都是vivado2024.1版本的。可以根据网上的教程下载与安装。 硬件资源 此次教程…...
Model Context Protocol(MCP)模型上下文协议
Model Context Protocol(MCP)模型上下文协议 前言一、什么是MCP二、MCP的作用三、MCP与Function call对比四、构建一个简单的MCP DEMO环境准备实现MCP Server运行 ServerMCP Client端配置验证 总结 前言 在Agent时代,将Agent确立为大模型未来…...
第十二章:FreeRTOS多任务创建与删除
FreeRTOS多任务创建与删除教程 概述 本教程介绍FreeRTOS多任务的创建与删除方法,主要涉及两个核心函数: 任务创建:xTaskCreate()任务删除:vTaskDelete() 实践步骤 1. 准备工程文件 复制005工程并重命名为006 2. 创建多个任务…...
Seed-Thinking-v1.5:字节豆包新推理模型发布,200B参数战胜Deepseek
摘要 本文引入了Seed-Thinking-v1.5,能够在响应之前通过思考进行推理,从而提高了各种基准测试的性能。Seed-Thinking-v1.5在AIME 2024上获得86.7分,在Codeforces上获得55.0分,在GPQA上获得77.3分,展示了优秀的STEM和编…...
C#.NET模拟用户点击按钮button1.PerformClick自动化测试
PerformClick英文词是什么意思,几个词组成 PerformClick 是一个由两个英文单词组成的合成词,下面为你分别解释每个部分的含义以及整个词在编程语境中的意义: 单个单词含义 Perform:它是一个动词,读音为 /pəˈfɔːm/ÿ…...
微服务之间调用外键“翻译”的方法概述
写在前面的话:减少strean流操作,减少多层嵌套for循环。使用普通for循环和map的方式进行转换, 第一步查询数据 List<Student> findList studentDao.findList(findMap); 第二步准备遍历和赋值 if(CollectionUtil.isNotEmpty(findLis…...
AIDD-人工智能药物设计-提升分子预测反事实解释可靠性
UQ 过滤:提升分子预测反事实解释可靠性 目录 I-INF 指标结合 F1 评分,为评估大分子复合物(包括 RNA-蛋白质)的界面相互作用网络提供了可靠且全面的新方法。通过使用生成的人工 CAR 序列微调蛋白质语言模型(PLM),显著提高了 CAR-T 细胞活性的预测准确性,有效克服了合成蛋…...
软件界面设计:打造用户喜爱的交互体验
在数字化飞速发展的当下,软件已渗透进生活的各个角落,从日常使用的社交、购物软件,到专业领域的办公、设计软件,其重要性不言而喻。而软件界面作为用户与软件交互的桥梁,直接决定了用户对软件的第一印象与使用体验。出…...
【前端】webpack一本通
今日更新完毕,不定期补充,建议关注收藏点赞。 目录 简介使用webpack默认只能处理js文件 ->引入加载器对JS语法降级,兼容低版本语法合并文件再次打包进阶 工作原理html-webpack-plugin插件webpack开发服务器引入使用webpack-dev-server模块…...
代码学习总结(一)
代码学习总结(一) 这个系列的博客是记录下自己学习代码的历程,有来自平台上的,有来自笔试题回忆的,主要基于 C 语言,包括题目内容,代码实现,思路,并会注明题目难度&…...
