当前位置: 首页 > article >正文

java加强 -File

File类的对象可以代表文件/文件夹,并可以调用其提供的方法对象文件进行操作。

File对象既可以代表文件,也可以代表文件夹。

创建File对象,获取某个文件的信息

语法:

File 对象名 = new File("需要访问文件的绝对路径(如果在当前工程下可以用相对路径)")

判断是否是文件

可以用对象名.isFile()来判断当前路径下的东西是文件还是文件夹,是文件返回true,不是文件返回false

判断文件是否存在

可以用对象名.exists()来判断绝对路径所代表的文件在此位置是否存在,存在返回true,不存在返回false。

创建文件

如果绝对路径(相对路径)所代表的文件不存在,可以用对象名.creatNewFile来创造对应的文件

创建文件夹

语法:

如果绝对路径所代表的东西不存在,需要一个文件夹,可以用对象名.mkdir()来在对应位置创造对应文件夹。(只能创建一级文件夹,若是需要在文件夹里套文件夹即多级文件夹,需要用mkdirs)

可以用对象名.listFiles();获取当前路径下的所有一级文件对象,并使用文件夹数组接收,即File[ ]类型。

示例

package filedemo;import java.io.File;public class FileDemo1 {public static void main(String[] args) throws Exception {//目标:创建File创建对象代表文件(文件/目录),搞清楚其提供的对文件进行操作的方法。//1、创建File对象,去获取某个文件的信息File f1 = new File("E:\\蓝桥杯\\【模板】01背包.cpp");System.out.println(f1.length());System.out.println(f1.getName());System.out.println(f1.isFile());System.out.println(f1.isDirectory());//2、使用相对路径定位文件对象//只要带盘符的都称为绝对路径//相对路径:不带盘符,默认是到idea工程下直接寻找文件的,一般用来找工程下的项目文件。File f2 = new File("day03-file-io\\src\\filedemo\\CodeBlossom");System.out.println(f2.length());//3、创建对象代表不存在的文件路径File f3 = new File("E:\\text.txt");System.out.println(f3.exists());System.out.println(f3.createNewFile());//4、创建对象代表不存在的文件夹路径File f4 = new File("E:\\text"); //只能创建一级文件夹System.out.println(f4.mkdir());File f5 = new File("E:\\aaa\\bbbb\\cccc");//System.out.println(f5.mkdir());     //多级文件夹,失败//创建多级用mkdirsSystem.out.println(f5.mkdirs());//5、创建File对象代表存在的文件,然后删除它File f6 = new File("E:\\text");System.out.println(f6.delete());    //删除文件//6、创建File对象代表存在的文件夹,然后删除它File f7 = new File("E:\\aaa\\bbbb\\cccc");System.out.println(f7.delete());    //删除文件夹(只能删空文件夹),删除后的文件不进入回收站//7、获取某个目录下的全部一级文件名称File f9 = new File("E:\\垃圾");String[] names = f9.list();for (String name:names){System.out.println(name);}File[] files = f9.listFiles();      //获取一级文件对象,存到数组里for (File file:files){System.out.println(file.getAbsoluteFile());     //获取文件绝对路径}}
}

创建File对象的注意事项

package filedemo;import java.io.File;
import java.util.Arrays;public class FileDemo2 {public static void main(String[] args) {//目标:掌握File遍历一级文件对象的操作//主调是文件或者路径不存在时,返回nullFile dir = new File("E:\\蓝桥杯\\【模板】01背包.cpp");//主调是空文件夹,返回长度为0的数组File dir2 = new File("E:\\aaa\\bbbb");//主调是一个有内容的文件夹,把里面所有一级文件和文件夹的路径放在File数组返回//主调是一个文件夹且文件夹有隐藏文件时,将里面的所有文件和文件夹的路径放在File数组中返回,包含隐藏文件//主调是一个文件夹,但没有权限访问该文件夹时,返回nullFile [] files = dir2.listFiles();//System.out.println(files);System.out.println(Arrays.toString(files));}
}

项目实战:利用listFiles()方法来寻找目录下的某一个文件

package filedemo;import java.io.File;public class FileSearchDemoText {public static void main(String[] args) {//目标:找出D:盘下steam.exe的位置try {File dir = new File("D:\\");searchFile(dir,"steam.exe");} catch (Exception e) {throw new RuntimeException(e);}}/*** 搜索文件* @param dir 搜索的目录* @param fileName 搜索的文件名称*/public static void searchFile(File dir,String fileName) throws Exception{//1、判断极端情况if (dir==null||!dir.exists()||dir.isFile()){return;//不搜索}//2、获取目录下的所有一级文件或者文件夹对象File[] files = dir.listFiles();//3、判断当前文件下是否存在一级文件对象,存在就遍历if(files!=null && files.length>0){//4、遍历一级文件对象for (File file :files){//5、判断此一级文件对象是不是文件if (file.isFile()){//6、判断文件名称是否和目标文件一致if(file.getName().equals(fileName)) {System.out.println("找到目标文件:"+file.getAbsolutePath());Runtime r = Runtime.getRuntime();r.exec(file.getAbsolutePath());}}else {//7、如果当前一级文件对象是文件夹,则继续递归调用searchFile(file,fileName);}}}}}

当找到对应exe文件时,用getRuntime()方法获取一个虚拟机对象(java内的虚拟机可以用于启动exe文件)然后用exec方法打开对应exe文件。

相关文章:

java加强 -File

File类的对象可以代表文件/文件夹,并可以调用其提供的方法对象文件进行操作。 File对象既可以代表文件,也可以代表文件夹。 创建File对象,获取某个文件的信息 语法: File 对象名 new File("需要访问文件的绝对路径&…...

c# 倒序方法

在C#中&#xff0c;有几种方法可以对List进行倒序排列&#xff1a; 1. 使用List的Reverse()方法&#xff08;原地反转&#xff09; List<int> numbers new List<int> { 1, 2, 3, 4, 5 };numbers.Reverse(); // 直接修改原列表// 结果&#xff1a;5, 4, 3, 2, 1 …...

每日c/c++题 备战蓝桥杯(P2241 统计方形(数据加强版))

洛谷P2241 统计方形&#xff08;数据加强版&#xff09;题解 题目描述 给定一个 n m n \times m nm 的方格棋盘&#xff0c;要求统计其中包含的正方形数量和长方形数量&#xff08;不包含正方形&#xff09;。输入为两个正整数 n n n 和 m m m&#xff0c;输出两个整数分…...

Ota++框架学习

一&#xff1a;框架结构 这是一幅展现 Web 应用程序架构的示意图&#xff0c;以下是对图中各部分的详细解释&#xff1a; 外部交互部分 Request&#xff08;请求&#xff09;&#xff1a;位于架构图的左上角&#xff0c;用黄色虚线框表示 。代表来自客户端&#xff08;如浏览器…...

Chrome安装最新vue-devtool插件

本vue-devtool版本是官方的 v7.6.8版本&#xff0c;兼容性好、功能齐全且稳定。 操作步骤&#xff1a; 方法一&#xff1a; 打开谷歌浏览器 --> 右上角三个点 --> 扩展程序 --> 管理扩展程序 --> 加载已解压的扩展程序&#xff0c; 然后选择解压后的文件夹即可。…...

Android锁

引言 &#x1f512; 在 Android 应用的开发过程中&#xff0c;随着业务需求的复杂度不断提升&#xff0c;多线程并发场景层出不穷。为了保证数据一致性与线程安全&#xff0c;锁&#xff08;Lock&#xff09;成为了不可或缺的工具。本篇博客将深入剖析 Android 中常用的锁机制…...

bfs-最小步数问题

最小步长模型 特征&#xff1a; 主要是解决权值为1且状态为字符串类型的最短路问题&#xff0c;实质上是有向图的最短路问题&#xff0c;可以简化为bfs求最短路问题。 代表题目&#xff1a; acwing 845 八数码问题&#xff1a; 八数码题中由于每次交换的状态是由x进行上下左右…...

sqlalchemy库详细使用

SQLAlchemy 是 Python 中最强大、最受欢迎的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它允许你使用 Python 对象来操作数据库&#xff0c;而不需要直接编写 SQL 语句。同时&#xff0c;它也提供了对底层 SQL 的完全控制能力&#xff0c;适用于从简单脚本到大型企…...

java----------->代理模式

目录 什么是代理模式&#xff1f; 为什么会有代理模式&#xff1f; 怎么写代理模式&#xff1f; 实现代理模式总共需要三步&#xff1a; 什么是代理模式&#xff1f; 代理模式&#xff1a;给目标对象提供一个代理对象&#xff0c;并且由代理对象控制目标对象的引用 代理就是…...

ET ProcessInnerSender类(实体) 分析

ProcessInnerSender 作用是进程内部发送Actor消息 字段 TIMEOUT_TIME 超时时间RpcId 用来累加requestCallback 存储RPC的回调事件list 用来获取MessageQueue中的Actor消息 方法 Awake 初始化在MessageQueue中注册待处理的消息队列Destroy 移除在MessageQueue中的消息队列U…...

Untiy基础学习(十四)核心系统—物理系统之碰撞检测代码篇 刚体,碰撞体,材质

目录 一、碰撞器&#xff08;Collider&#xff09;与触发器&#xff08;Trigger&#xff09; 二、碰撞检测条件 三、碰撞事件与触发器事件&#xff0c;可以理解为特殊的生命周期函数。 四、讲讲如何选择 ​编辑 五、总结 一、碰撞/触发事件函数对照表 二、Collider 与 …...

SAP学习笔记 - 开发08 - Eclipse连接到 BTP Cockpit实例

有关BTP&#xff0c;之前学了一点儿&#xff0c;今天继续学习。 SAP学习笔记 - 开发02 - BTP实操流程&#xff08;账号注册&#xff0c;BTP控制台&#xff0c;BTP集成开发环境搭建&#xff09;_sap btp开发-CSDN博客 如何在Eclipse中连接BTP Cockpit开发环境实例。 1&#xf…...

如何用Redis实现分布式锁?RedLock算法的核心思想?Redisson的看门狗机制原理?

一、Redis分布式锁基础实现 public class RedisDistributedLock {private JedisPool jedisPool;private String lockKey;private String clientId;private int expireTime 30; // 默认30秒public boolean tryLock() {try (Jedis jedis jedisPool.getResource()) {// NX表示不…...

Java项目层级介绍 java 层级 层次

java 层级 层次 实体层 控制器层 数据连接层 Service : 业务处理类 Repository &#xff1a;数据库访问类 Java项目层级介绍 https://blog.csdn.net/m0_67574906/article/details/145811846 在Java项目中&#xff0c;层级结构&#xff08;Layered Architecture&#xf…...

Git的安装和配置(idea中配置Git)

一、Git的下载和安装 前提条件&#xff1a;IntelliJ IDEA 版本是2023.3 &#xff0c;那么配置 Git 时推荐使用 Git 2.40.x 或更高版本 下载地址&#xff1a;CNPM Binaries Mirror 操作&#xff1a;打开链接 → 滚动到页面底部 → 选择2.40.x或更高版本的 .exe 文件&#xf…...

【2025版】Spring Boot面试题

文章目录 1. Spring, Spring MVC, SpringBoot是什么关系&#xff1f;2. 谈一谈对Spring IoC的理解3. Component 和 Bean 的区别&#xff1f;4. Autowired 和 Resource 的区别&#xff1f;5. 注入Bean的方法有哪些&#xff1f;6. 为什么Spring 官方推荐构造函数注入&#xff1f;…...

火山引擎实时音视频 高代码跑通日志

实时音视频 SDK 概览--实时音视频-火山引擎 什么是实时音视频 火山引擎实时音视频&#xff08;Volcengine Real Time Communication&#xff0c;veRTC&#xff09;提供全球范围内高可靠、高并发、低延时的实时音视频通信能力&#xff0c;实现多种类型的实时交流和互动。 通…...

atoi函数,sprintf函数,memcmp函数,strchar函数的具体原型,功能,返回值;以及使用方法

以下是这四个C语言标准库函数的详细说明&#xff1a; 1. atoi() - 字符串转整数 **原型**&#xff1a; int atoi(const char *str); **功能**&#xff1a; 将字符串参数str转换为整数&#xff08;int类型&#xff09;。函数会跳过前面的空白字符&#xff08;如空格、制表符&am…...

C++学习之打车软件git版本控制

目录 01 3-git的简介 02 4-git的下载和提交代码 03 5-git添加一个新文件 04 5-删除一个文件 05 6-git的批量添加和提交文件 06 7-git重命名文件名 07 8-git解决代码冲突 08 9-git的分支的概念 09 10-创建项目代码仓库 10 1-git提交代码复习 01 3-git的简介 1 --------…...

基于 PostgreSQL 的 ABP vNext + ShardingCore 分库分表实战

&#x1f680; 基于 PostgreSQL 的 ABP vNext ShardingCore 分库分表实战 &#x1f4d1; 目录 &#x1f680; 基于 PostgreSQL 的 ABP vNext ShardingCore 分库分表实战✨ 背景介绍&#x1f9f1; 技术选型&#x1f6e0;️ 环境准备✅ Docker Compose&#xff08;多库 & 读…...

jenkins 启动报错

java.lang.UnsatisfiedLinkError: /opt/application/jdk-17.0.11/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory。 解决方案&#xff1a; yum install freetype-devel 安装完成之后重启jenkins。...

C++ 套接字函数详细介绍

目录 头文件1. 套接字创建与配置2. 绑定地址与端口3. 连接建立4. 数据传输5. 套接字选项6. 地址转换7. 套接字关闭8. 其他实用函数 C 套接字函数详细介绍 套接字(Socket)是网络通信的基本端点&#xff0c;C中通常使用BSD套接字API进行网络编程。以下是主要的套接字相关函数及其…...

【合新通信】无人机天线拉远RFOF(射频光纤传输)解决方案

无人机天线拉远RFOF方案通过光纤替代传统射频电缆&#xff0c;实现无人机与地面控制站之间的高保真、低损耗信号传输&#xff0c;尤其适用于高频段&#xff08;如毫米波&#xff09;、远距离或复杂电磁环境下的无人机作业场景。 核心应用场景 军事侦察与电子战 隐蔽部署&…...

程序设计语言----软考中级软件设计师(自用学习笔记)

目录 1、解释器和编译器 2、程序的三种控制结构 3、程序中的数据必须具有类型 4、编译、解释程序翻译阶段 5、符号表 6、编译过程 7、上下文无关文法 8、前、中、后缀表达式 9、前、后缀表达式计算 10、语法树中、后序遍历 11、脚本语言和动态语言 12、语法分析方法…...

火山RTC 7 获得远端裸数据

一、获得远端裸数据 1、获得h264数据 1&#xff09;、远端编码后视频数据监测器 /*** locale zh* type callback* region 视频管理* brief 远端编码后视频数据监测器<br>* 注意&#xff1a;回调函数是在 SDK 内部线程&#xff08;非 UI 线程&#xff09;同步抛出来的&a…...

通过SMTP协议实现Linux邮件发送配置指南

一、环境准备与基础配置 1. SMTP服务开通&#xff08;以qq邮箱为例&#xff09; 登录qq邮箱网页端&#xff0c;进入「设置」-「POP3/SMTP/IMAP」 开启「SMTP服务」并获取16位授权码&#xff08;替代邮箱密码使用&#xff09; 记录关键参数&#xff1a; SMTP服务器地址&#…...

若依框架页面

1.页面地址 若依管理系统 2.账号和密码 管理员 账号admin 密码admin123 运维 账号yuwei 密码123456 自己搭建的地址方便大家学习&#xff0c;不要攻击哦&#xff0c;谢谢啊...

44、私有程序集与共享程序集有什么区别?

私有程序集&#xff08;Private Assembly&#xff09;与共享程序集&#xff08;Shared Assembly&#xff09;是.NET框架中程序集部署的两种不同方式&#xff0c;它们在部署位置、版本控制、访问权限等方面存在显著差异&#xff0c;以下是对二者的详细比较&#xff1a; 1. 部署…...

【Java面试题】——this 和 super 的区别

&#x1f381;个人主页&#xff1a;User_芊芊君子 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 &#x1f50d;系列专栏&#xff1a;【Java】内容概括 【前言】 在Java的世界里&#xff0c;this和 super是两个非常重要且容易混淆的关键字。无论是在日常…...

记录 QT 在liunx 下 QFileDialog 类调用问题 ()Linux下QFileDialog没反应)

1. 2025.05.14 踩坑记录 因为QT 在 liunx 文件系统不同导致的 Windows &#xff1a; QString filePath QFileDialog::getOpenFileName(nullptr, "选择文件", ".", "文本文件 (*.txt);所有文件 (*.*)"); 没问题 liunx 下 打不开&#xff…...