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

文件操作和IO(2):Java中操作文件

目录

一、File的属性

二、File的构造方法

三、File的方法

四、代码示例

1、getName,getParent,getPath方法

2、getAbsolutePath,getCanonicalPath方法

3、exists,isDirectory,createNewFile方法

4、createNewFile,delete,deleteOnExit

5、list,listFiles,mkdir,mkdirs,renameTo方法


        本章内容,主要涉及文件的元信息、路径的操作,并不存在对文件的读写操作。

        Java通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意:有File对象并不意味着真实存在该文件。

以下是对File的概述:

一、File的属性

修饰符及类型属性说明
static StringpathSeparator依赖于系统的路径分隔符,String
类型的表示
static charpathSeparatorChar依赖于系统的路径分隔符,char类

这里路径直接的分隔符是根据系统自动调整的,在开发过程中还是更推荐使用正斜杠 “ / ”。windows也支持正斜杠。


二、File的构造方法

签名说明
File(File parent, String child)根据父目录 + 孩子文件路径,创建⼀个新的 File 实例
File(String pathname)根据文件路径创建⼀个新的 File 实例,路径可以是绝
对路径或者相对路径
File(String parent, String child)根据父目录 + 孩子文件路径,创建⼀个新的 File 实
例,父目录用路径表示

这里主要介绍中间的构造方法,中间的是最常用的。注意:这里的决定路径有两种情况:

        1、如果是在idea中运行程序,此时工作目录就是在项目所在的目录。

        2、如果把代码打包成一个jar包,此时工作目录就是在jar包所在目录。


三、File的方法

修饰符及返回值类型方法签名说明
StringgetParent()返回 File 对象的⽗⽬录⽂件路径
StringgetName()返回 FIle 对象的纯⽂件名称
StringgetPath()返回 File 对象的⽂件路径
StringgetAbsolutePath()返回File 对象的绝对路径
StringgetCanonicalPath()返回 File 对象的修饰过的绝对路径
booleanexists()判断 File 对象描述的⽂件是否真实
存在
boolean                         isDirectory()                  判断 File 对象代表的⽂件是否是⼀个⽬录
booleanisFile()判断 File 对象代表的⽂件是否是⼀
个普通⽂件
booleancreateNewFile()根据 File对象,⾃动创建⼀个空⽂
件。成功创建后返回 true
booleandelete()根据 File 对象,删除该⽂件。成功
删除后返回 true 
voiddeleteOnExit()根据 File 对象,标注⽂件将被删
除,删除动作会到 JVM 运⾏结束时
才会进⾏
String[]list()返回 File 对象代表的⽬录下的所有
⽂件名
File[]listFiles()返回 File 对象代表的⽬录下的所有
⽂件,以 File 对象表⽰
booleanmkdir()创建 File 对象代表的⽬录
booleanmkdirs()创建 File 对象代表的⽬录,如果必
要,会创建中间⽬录
booleanrenameTo(File dest)进⾏⽂件改名,也可以视为我们平
时的剪切、粘贴操作
booleancanRead()判断⽤⼾是否对⽂件有可读权
booleancanWrite()判断⽤⼾是否对⽂件有可写权限

四、代码示例

1、getName,getParent,getPath方法

绝对路径的File对象,代码如下

public class IODemo1 {public static void main(String[] args) {//指定文件的路径File f1 = new File("C:/IOTest/test.txt");//绝对路径System.out.println(f1.getPath());//返回File对象的⽂件路径System.out.println(f1.getParent());//返回 File 对象的⽗⽬录⽂件路径System.out.println(f1.getName());//返回 FIle 对象的纯⽂件名称}
}

执行结果:

相对路径的File对象,代码如下

public class IODemo1 {public static void main(String[] args) {//指定文件的路径File f1 = new File("./test.txt");//绝对路径System.out.println(f1.getPath());//返回File对象的⽂件路径System.out.println(f1.getParent());//返回 File 对象的⽗⽬录⽂件路径System.out.println(f1.getName());//返回 FIle 对象的纯⽂件名称}
}

执行结果:

2、getAbsolutePath,getCanonicalPath方法

使用绝对路径创造一个File对象,代码如下

public class IODemo2 {public static void main(String[] args) throws IOException {File f = new File("C:/IOTest/test.txt");//绝对路径System.out.println(f.getAbsolutePath());//返回File对象的绝对路径System.out.println(f.getCanonicalPath());//返回File对象的修饰过的绝对路径}
}

执行结果:

使用相对路径创建File对象,代码如下:

public class IODemo2 {public static void main(String[] args) throws IOException {File f = new File("./test.txt");//绝对路径System.out.println(f.getAbsolutePath());//返回File对象的绝对路径System.out.println(f.getCanonicalPath());//返回File对象的修饰过的绝对路径}
}

执行结果:

可以看出,上面方法在绝对路径中没有啥差别,但在相对路径的就有些许差别。getCanonicalPath返回File对象的修饰过的绝对路径,也就没有了点 ' . ' 修饰。

3、exists,isDirectory,createNewFile方法

使用相对路径创建File对象,代码如下:

public class IODemo3 {public static void main(String[] args) {File f = new File("./test.txt");boolean ret1 = f.exists();//判断 File 对象描述的⽂件是否真实存在boolean ret2 = f.isDirectory();//判断 File 对象代表的⽂件是否是⼀个⽬录boolean ret3 = f.isFile();//判断 File 对象代表的⽂件是否是⼀个普通⽂件System.out.println(ret1);System.out.println(ret2);System.out.println(ret3);}
}

执行结果:

4、createNewFile,delete,deleteOnExit

先创造出一个文件,使用createNewFile方法,代码如下:

public class IODemo4 {public static void main(String[] args) throws IOException {File f = new File("./test.txt");boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 trueSystem.out.println(ret1);}
}

执行代码前:

执行代码后:

多了test.txt文件

delete方法删除test.txt文件,代码如下:

public class IODemo4 {public static void main(String[] args) throws IOException {File f = new File("./test.txt");boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 trueSystem.out.println(ret1);boolean ret = f.delete();//根据 File 对象,删除该⽂件。成功删除后返回 true System.out.println(ret);}
}

执行结果:

test.txt文件没有了。

deleteOnExit方法,在程序执行完后才会删除指定的文件,代码如下:

public class IODemo4 {public static void main(String[] args) throws IOException, InterruptedException {File f = new File("./test.txt");boolean ret1 = f.createNewFile();//根据 File对象,⾃动创建⼀个空⽂件。成功创建后返回 trueSystem.out.println(ret1);//根据 File 对象,标注⽂件将被删除,删除动作会到 JVM 运⾏结束时才会进⾏f.deleteOnExit();Thread.sleep(5000);}
}

执行前:

有test.txt文件。

执行后:

过5秒后才会删除test.txt文件。

5、list,listFiles,mkdir,mkdirs,renameTo方法

list:

代码如下:

public class IODemo5 {public static void main(String[] args) {File f = new File(".");String[] files = f.list();//返回 File 对象代表的⽬录下的所有⽂件名System.out.println(Arrays.toString(files));}
}

执行结果:

listFiles:

代码如下:

public class IODemo5 {public static void main(String[] args) {
//        String[] files = f.list();//返回 File 对象代表的⽬录下的所有⽂件名
//        System.out.println(Arrays.toString(files));File f = new File(".");File[] files = f.listFiles();//返回File对象代表的⽬录下的所有⽂件,以File对象表⽰System.out.println(Arrays.toString(files));}
}

执行结果:

mkdir:

代码如下:

public class IODemo6 {public static void main(String[] args) {File f = new File("./aaa");//创建 File 对象代表的⽬录boolean ret1 = f.mkdir();System.out.println(ret1);}
}

执行前:

执行后:

多出了aaa目录。

mkdirs:

代码如下:

public class IODemo7 {public static void main(String[] args) {File f = new File("./aaa/bbb/ccc");//创建 File 对象代表的⽬录,如果必 要,会创建中间⽬录boolean ret = f.mkdirs();System.out.println(ret);}
}

执行前:

执行后:

当前目录下多了aaa/bbb/ccc。

renameTo:

代码如下:

public class IODemo8 {public static void main(String[] args) {File src = new File("./test2.txt");File dest = new File("./test.txt");src.renameTo(dest);//进⾏⽂件改名,也可以视为我们平时的剪切、粘贴操作}
}

执行前:

文件名是test.txt。

执行后:

文件名是test2.txt。

除重命名功能外,renameTo还有移动功能(移动比复制、粘贴效率高,前提是在同一硬盘上)。


都看到这了,点个赞再走吧,谢谢谢谢谢

相关文章:

文件操作和IO(2):Java中操作文件

目录 一、File的属性 二、File的构造方法 三、File的方法 四、代码示例 1、getName,getParent,getPath方法 2、getAbsolutePath,getCanonicalPath方法 3、exists,isDirectory,createNewFile方法 4、createNewF…...

人工智能-零基础

机缘 扩充下知识栈,准备零基础开始 人工智能零基础 日常 日常水一下博客… 憧憬 努力成为一个会人工智能的程序员...

网络爬虫部分应掌握的重要知识点

目录 一、预备知识1、Web基本工作原理2、网络爬虫的Robots协议 二、爬取网页1、请求服务器并获取网页2、查看服务器端响应的状态码3、输出网页内容 三、使用BeautifulSoup定位网页元素1、首先需要导入BeautifulSoup库2、使用find/find_all函数查找所需的标签元素 四、获取元素的…...

git命令笔记

文章目录 0、参考文档1、常用指令git checkout系列git pull系列git push系列git reset系列git branch系列git log系列git revert 撤销某次提交git diff其他 2、查看和修改用户名和邮箱,生成密钥other 0、参考文档 Git使用教程:最详细、最傻瓜、最浅显、…...

微服务day03-Nacos配置管理与Nacos集群搭建

一.Nacos配置管理 Nacos不仅可以作为注册中心,可以进行配置管理 1.1 统一配置管理 统一配置管理可以实现配置的热更新(即不用重启当服务发生变更时也可以直接更新) dataId格式:服务名-环境名.yaml,分组一般使用默认…...

DFS剪枝

剪枝 将搜索过程中一些不必要的部分剔除掉,因为搜索过程构成了一棵树,剔除不必要的部分,就像是在树上将树枝剪掉,故名剪枝。 剪枝是回溯法中的一种重要优化手段,方法往往先写一个暴力搜索,然后找到某些特…...

基于SpringBoot多模块项目引入其他模块时@Autowired无法注入

基于SpringBoot多模块项目引入其他模块时Autowired无法注入 一、问题描述1、解决方案 一、问题描述 启动Spring Boot项目时报 Could not autowire. No beans of ‘xxxxxxxx’ type found. 没有找到bean的实例,即spring没有实例化对象,也就无法根据配置文…...

每日一题——LeetCode1566.重复至少K次且长度为M的模式

方法一 暴力枚举 var containsPattern function(arr, m, k) {const n arr.length;for (let l 0; l < n - m * k; l) {let offset;for (offset 0; offset < m * k; offset) {if (arr[l offset] ! arr[l offset % m]) {break;}}if (offset m * k) {return true;}}r…...

代码随想录刷题笔记-Day27

1. 全排列 46. 全排列https://leetcode.cn/problems/permutations/ 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],…...

【小沐学GIS】QGIS安装和入门使用

文章目录 1、简介2、下载和安装3、使用3.1 XYZ Tiles3.2 WMS / WMTS3.3 GeoJson文件加载 4、在线资源结语 1、简介 QGIS是一款开源地理信息系统。该项目于2002年5月诞生&#xff0c;同年6月作为SourceForge上的一个项目建立。QGIS目前运行在大多数Unix平台、Windows和macOS上。…...

黑马程序员——接口测试——day03——Postman断言、关联、参数化

目录&#xff1a; Potman断言 Postman断言简介Postman常用断言 断言响应状态码断言包含某字符串断言JSON数据Postman断言工作原理Postman关联 简介实现步骤核心代码创建环境案例1案例2Postman参数化 简介数据文件简介编写数据文件 CSV文件JSON文件导入数据文件到postman读取数…...

Unreal触屏和鼠标控制旋转冲突问题

Unreal触屏和鼠标控制旋转冲突问题 鼠标控制摄像机旋转添加Input轴计算旋转角度通过轴事件控制旋转 问题和原因问题原因 解决办法增加触摸控制旋转代码触屏操作下屏蔽鼠标轴响应事件 鼠标控制摄像机旋转 通过Mouse X和Mouse Y控制摄像机旋转。 添加Input轴 计算旋转角度 通过…...

Vins-Moon配准运行

Vins-Moon运行 求助&#xff01;&#xff01;&#xff01;源码地址电脑配置环境配置编译Kitti数据集制作IMU时间戳问题 适配Kitti数据集运行结果Euroc数据集kitti数据集 evo评估&#xff08;KITTI数据&#xff09;输出轨迹(tum格式)结果 求助&#xff01;&#xff01;&#xff…...

MSCKF3讲:后端理论推导(上)

MSCKF3讲&#xff1a;后端理论推导&#xff08;上&#xff09; 文章目录 MSCKF3讲&#xff1a;后端理论推导&#xff08;上&#xff09;1 MSCKF中的状态变量① IMU状态:② cam0状态&#xff1a;③ IMU和cam0间状态关系 2 微分方程递推&#xff08;数值解&#xff09;3 IMU状态预…...

群控代理IP搭建教程:打造一流的网络爬虫

目录 前言 一、什么是群控代理IP&#xff1f; 二、搭建群控代理IP的步骤 1. 获取代理IP资源 2. 配置代理IP池 3. 选择代理IP策略 4. 编写代理IP设置代码 5. 异常处理 三、总结 前言 群控代理IP是一种常用于网络爬虫的技术&#xff0c;通过使用多个代理IP实现并发请求…...

【IO流系列】字符流练习(拷贝、文件加密、修改文件数据)

字符流练习 练习1&#xff1a;文件夹拷贝1.1 需求1.2 代码实现1.3 输出结果 练习2&#xff1a;文件加密与解密2.1 需求2.2 代码实现2.3 输出结果 练习3&#xff1a;修改文件数据&#xff08;常规方法&#xff09;3.1 需求3.2 代码实现3.3 输出结果 练习4&#xff1a;修改文件数…...

华为云磁盘挂载

华为云磁盘挂载 磁盘挂载情况 fdisk -l 2. 查看当前分区情况 df -h 3.给新硬盘添加新分区 fdisk /dev/vdb 4.分区完成&#xff0c;查询所有设备的文件系统类型 blkid 发现新分区并没有文件系统类型&#xff08;type为文件系统具体类型&#xff0c;有ext3,ext4,xfs,iso9660等…...

通过大语言模型理解运维故障:评估和总结

张圣林 南开大学软件学院副教授、博士生导师 第六届CCF国际AIOps挑战赛程序委员会主席 在ATC、WWW、VLDB、KDD、SIGMETRICS等国际会议和JSAC、TC、TSC等国际期刊发表高水平论文50余篇。主持国家自然科学基金项目2项&#xff0c;横向项目13项&#xff08;与华为、字节跳动、腾讯…...

SVN教程-SVN的基本使用

SVN&#xff08;Apache Subversion&#xff09;是一款强大的集中式版本控制系统&#xff0c;它在软件开发项目中扮演着至关重要的角色&#xff0c;用于有效地跟踪、记录和管理代码的演变过程。与分布式系统相比&#xff0c;SVN 的集中式架构使得团队能够更加协同地进行开发&…...

【MySQL】数据查询——DQL基本数据库查询

目录 查询语法1. 查询表中所有的数据行和列&#xff0c;采用“*”符号2. 查询表中指定列的数据。3. 在查询中使用别名&#xff0c;使用“AS”关键字。4. 在查询中使用常量列&#xff1a;如果需要将一些常量的默认信息添加到输出结果中&#xff0c;以方便统计或计算。可以使用常…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...