【JavaEE初阶】文件-IO之实现文件系统的操作如何进行实现

前言

🌟🌟本期讲解关于文件IO的操作,这里涉及到比较常用的文件操作哦~~~

🌈上期博客在这里:【JavaEE初阶】CAS的ABA问题,JUC多线程编程有用的相关类-CSDN博客

🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客

 

目录

📚️1.初识文件

1.1认识硬盘

1.2路径

1.相对路径和绝对路径

 1.3文件

1.文本文件和二进制文件

2.两种文件的区别

📚️2.文件系统操作

1.File的构造方法

2.文件系统操作的方法

2.1文件路径的操作

2.2文件是否存在操作

2.3文件的创建和删除

2.4文件名字读取

2.5文件目录的创建 

2.6文件重命名

📚️3.总结

 

📚️1.初识文件

1.1认识硬盘

我们知道文件一般存储在硬盘(即磁盘上),但是在计算机中,这里的硬盘不完全等于磁盘,磁盘这里有磁带,而磁盘是外存储的一种,我们的硬盘即软盘(机械硬盘)是一种依靠磁性为介质来进行存储数据的;后来2017年这里有更新的(ssd)即固态硬盘,这里的数据的读取就快了很多倍(这里是依靠集成电路)来进行实现的;

扩展:

这里的机械硬盘是擅长顺序读写的,但是不擅长随机读写,机械硬盘图示如下:

这里机械硬盘就是通过磁头通过停留在不同的位置,通过不同位置的磁性来获取数据信息;

注意:机械硬盘擅长顺序读写,但是这里不擅长随机读写

举例:

当拷贝一份很大文件的时候,由于要全部都拷贝下来,那大部分都是通过磁盘高速旋转,然后磁头在进行读取数据的操作,

但是拷贝的是离散的小份的文件,那么大多数就是磁头在的移动,可以看到这很明显比较磁盘旋转获取的数据的速度更慢;

1.2路径

 所谓的文件路径就是在我们电脑上方的路径的实现,如图所示:

当我们点击这里的路径时,所展示的就是文件的路径了:

E:\Thread\src 

这里就是小编打开文件的路径;

1.相对路径和绝对路径

这里的路径分为两种比较重要的路径:

绝对路径:所谓的绝对路径就是重根目录出发,然后逐步表示到我们目标文件的位置;

相对路径(当前目录、工作目录):就是从当前的目录进行查找我们的目标文件

例如:我们找一下test.txt

这里的绝对路径就是:E:\Thread\src\test.txt

但是相对路径就是:.\test.txt(前提是我们已经在当前这个目录上了),这里的“.” 代表的就是E:\Thread\src;

目标文件图示:

 1.3文件

1.文本文件和二进制文件

文件这里分为两种重要的文件:

两种重要的文件:文本文件,二进制文件

文本文件:

这的文本文件就表示的是按照文本、字符串的方式来进行理解的(即二进制表示的字符),进行一步说:就是二进制表示的字符正在ASCII码表,和gbk&utf8码表上能够进行对应

二进制文件:

这里的二进制文件,没有上述的限制,这里可以存储任何的数据;

2.两种文件的区别

这里我们的记事本就是读取的就是文本文件,,那么我们判断一个文件是否为文本文件还是二进制文件,就可以通过记事本来进行数据的演示:

实例:

1.当我们读取一个二进制文件的时候,并用记事本进行打开,就有如下的图示:

可以看到此时展示的就是一堆的乱码,这就是二进制文件。

2.当我们打开一个 文本文件的话,这里的展示如下图所示:

那么此时就是一个可以看得懂的关于小编写的关于文件IO的操作;

在日常的生活中:图片,视频,音频,动态库都是二进制的文件,PPT,Word也是一种二进制的文件;

注意,补充:计算机对于文件是一个广义的概念:

硬盘上的普通文件是一个文件

硬盘上的文件夹是一个目录

这里的概念就是我们“专业人士使用的词哈~~~~”

📚️2.文件系统操作

在操作系统中提供了一系列的文件系统的操作API,我们java又对这个操作系统提供的文件系统API又进行了封装,所以我们能够在idea上进行文件系统的操作;

这个包就是java.io,这里提供了File类进行文件系统的一些列操作;

2.1File的构造方法

这里的File的构造方法就有一下几个:

假如还是看这个test.txt这里的parent文件路径就是:E:\Thread\src 

这里我们重点讲解第二个:File(String pathname)这个构造方法的使用;

注意:这里的路径可以是绝对路径,或者是相对路径如果我们在idea上使用相对路径,那么工作的目录就是项目的目录;

当然这里也可以是不存在的路径;

2.2文件系统操作的方法

1.文件路径的操作

这里的方法演示比较多小编就一段代码般的演示吧,代码如下:

 public static void main(String[] args) throws IOException {//File file=new File("E:/Thread/test.txt");File file=new File("./test.txt");System.out.println(file.getParent());//文件的父目录System.out.println(file.getName());//返回文件的名字System.out.println(file.getPath());//引用System.out.println(file.getAbsolutePath());//一个绝对的路径System.out.println(file.getCanonicalPath());//一个被修饰的绝对路径}

解释:

这里操作是在,我们创建了一个文件的情况下的:

这里的test.txt

当我们使用当前工作目录时,如上图所示:

getParent():即表示哦们需要查找目标文件的父目录,那么此时就输出“.”;

getName():表示的是当前我们要查找的文件的文件名字

getPath():返回 File 对象的文件路径,这里就是输出括号里的路径

getAbsolutePath():返回 File 对象的绝对路径

getCanonicalPath():返回 File 对象的修饰过的绝对路径

这里的打印就是如下图所示:

以上就是关于路径的文件IO的操作了;
2.文件是否存在操作

和上一致的,小编通过代码进行演示,代码如下:

File file=new File("./test1.txt");System.out.println(file.exists());System.out.println(file.isDirectory());//表示是否是一个目录System.out.println(file.isFile());//表示是否是一个普通目录

解释:

exists():几表示的是这个文件是否存在;

isDirectory(): 表示这个文件是否为目录;

isFile():表示的是否为一个普通的文件;

这里的前提是创建了一个test1.txt的文件,这里的输出如下:

很明显,这里是一个普通的文件形式,并且这是存在这个工作目录上的文件,即存在的

3.文件的创建和删除

1.文件的创建

代码实例如下:

  //进行创建boolean result = file.createNewFile();System.out.println("result=" + result);

这里就是一个在上述test.txt不存在的时候,可以进行创建,当执行程序后:

这里就是不存在test.txt文件,但是创建后,就存在了:

2.文件的删除

1.立马删除

代码如下:

//删除一个目录boolean result1=file.delete();System.out.println(result1);  //很明显delete也能够删除目录

在上述的操作中就可以删除文件

2.过后删除

代码如下:

File file = new File("./test.txt");     file.deleteOnExit();Thread.sleep(5000);

这里就是在函数执行完代码的时候,才会进行文件的删除操作,注意此时是没有返回值的; 

在平时的运用中,代表的是临时文件,只有当程序正常结束,才会直接删除,若存在异常退出(断电)文件就不会进行删除操作;

4.文件名字读取
File file=new File(".");File[] files1=file.listFiles();//所有文件String[] files=file.list();//所有文件名字System.out.println(Arrays.toString(files));System.out.println(Arrays.toString(files1));

解释:

File[] files1=file.listFiles():表示的是这里工作目录下的所有文件

String[] files=file.list():表示这里工作目录下所有文件的名字是啥

这里的输出如下:

5.文件目录的创建 

代码如下所示:

public static void main(String[] args) {File file=new File("./aaa");boolean result=file.mkdir();System.out.println(result);
}

这里的输出就是一个boolean类型,此时就创建了一个目录,如下:

当然我们要创建一个多重的目录的时候,代码如下:

public static void main(String[] args) {File file=new File("./aaa/bbb");
//创建一个目录boolean result=file.mkdirs();System.out.println(result);
}

这种情况下就能创建多个目录,输出如下:

这里就创建了多个目录,并分在aaa目录下的bbb

mkdir():代表的是创建File 对象代表的目录

mkdirs():代表的是可以创建多个目录

6.文件重命名

代码如下:

 File orign=new File("./test.txt");File cheak=new File("./test1.txt");orign.renameTo(cheak);

这里的前提是test.txt文件是存在的但是,这里就是文件的改名,这里的rename还可以移动文件;

📚️3.总结

💬💬本期主要进行了文件的认识,和和硬盘的认识,以及对于文件系统的操作进行了具体的代码演示,可供uu们学习,了解~~~

本期的代码在这里哦:IO: IO文件操作 (gitee.com)

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

                             😊😊  期待你的关注~~~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支持向量机-笔记

支持向量机(Support Vector Machine, SVM) 是一种强大的监督学习算法,广泛应用于分类和回归任务,特别是在分类问题中表现优异。SVM 的核心思想是通过寻找一个最优超平面,将不同类别的数据点进行分割,并最大…

数据结构 ——— 顺序表oj题:有效的括号

目录 题目要求 代码实现 题目要求 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个…

[单master节点k8s部署]37.微服务(一)springCloud 微服务

微服务架构的一个重要特点是,它与开发中使用的具体编程语言或技术栈无关。每个微服务都可以使用最适合其功能需求的语言或技术来实现。例如,一个微服务可以用Java编写,另一个微服务可以用Python、Go、Node.js等编写。微服务架构允许这种灵活性…

Gin项目的初始化步骤和常见错误记录

相信很多人对Go的环境安装和Gin项目的初始化都已经手拿把攥很是熟练了,本节介绍一个自己新建Go项目时非常好用的设置以及记录一下Gin项目的初始化过程和常能遇到的错误。 一个容易忽略的Go ENV 在安装了Go的电脑中,我们可以在命令行执行 go env 命令&…

04 什么是线性表

什么是线性表 一、为什么需要线性表 例如: ​ 在程序中保存指定班级的所有的学生信息(暂时只需要处理姓名、年龄),该班级最多可容纳30人,且可进行数量上的增减。 业务功能: ​ 1)这个项目中…

【Go】GO语言知识总结浅析

Go语言是一种现代化的编程语言,由Google于2007年设计并于2009年发布。它旨在使编程变得简单、高效,并且可以在多核处理器上轻松构建高性能应用。Go语言的编程思想、发展历史、版本特点、运行原理、数据类型、应用场景,以及在web开发、网络编程…

云轴科技ZStack入选信通院《高质量数字化转型产品及服务全景图》AI大模型图谱

近日,由中国互联网协会中小企业发展工作委员会主办的“2024大模型数字生态发展大会暨铸基计划年中会议”在北京成功召开。会上发布了中国信通院在大模型数字化等领域的多项工作成果,其中重点发布了《高质量数字化转型产品及服务全景图(2024上…

ESP32利用WebServer进行设备配置

目标需求 利用esp32的WebServer功能&#xff0c;展示一个网页&#xff0c;对里面的参数进行配置&#xff0c;并以json文本格式保存到flash里面。 1、定义HTML const char index_html[] PROGMEM R"rawliteral( <!DOCTYPE html> <html lang"en"> …

使用SpringMVC搭建WEB项目时报错404的问题排查解决以及web.xml配置文件init-param行标红问题

一、使用SpringMVC搭建WEB项目时报错404的问题排查解决 很早前&#xff08;4年前&#xff09;就把这个搭建过&#xff0c;但今天运行的时候就是报404错误&#xff0c;见文章&#xff1a; JAVA开发中SpringMVC框架的使用及常见的404问题原因以及SpringMVC框架基于注解的开发实例…

Apache SeaTunnel 9月份社区发展记录

各位热爱 SeaTunnel 的小伙伴们&#xff0c;9月份社区月报来啦&#xff01;这里将定期更新SeaTunnel社区每个月的重大进展&#xff0c;欢迎关注&#xff01; 月度Merge Stars 感谢以下小伙伴上个月为 Apache SeaTunnel 做的精彩贡献&#xff08;排名不分先后&#xff09;&…

【网络安全】CVE-2024-46990: Directus环回IP过滤器绕过实现SSRF

未经许可,不得转载。 文章目录 背景漏洞详情受影响版本解决方案背景 Directus 是一款开源 CMS,提供强大的内容管理 API,使开发人员能够轻松创建自定义应用程序,凭借其灵活的数据模型和用户友好的界面备受欢迎。然而,Directus 存在一个漏洞,允许攻击者绕过默认的环回 IP …

问卷调查毕设计算机毕业设计投票系统SpringBootSSM框架

目录 一、引言‌ ‌二、需求分析‌ 用户角色‌&#xff1a; ‌功能需求‌&#xff1a; ‌非功能需求‌&#xff1a; ‌三、系统设计‌ ‌技术选型‌&#xff1a; ‌数据库设计‌&#xff1a; ‌界面设计‌&#xff1a; ‌四、实现步骤‌ ‌后端实现‌&#xff1a; …

UM981最小系统推荐设计

L1&#xff1a;推荐使用 0603 封装的 68nH 射频电感 C1&#xff1a;推荐使用 100nF 100pF 两个电容并联 C2&#xff1a;推荐使用 100pF 电容 C3&#xff1a;推荐使用 n*10μF1*100nF 电容并联&#xff0c;总容值不小于 30μF R1&#xff1a;推荐使用 10kΩ电阻 注&#x…

dbt doc 生成文档命令示例应用

DBT提供了强大的命令行工具&#xff0c;它使数据分析师和工程师能够更有效地转换仓库中的数据。dbt的一个关键特性是能够为数据模型生成文档&#xff0c;这就是dbt docs命令发挥作用的地方。本教程将指导您完成使用dbt生成和提供项目文档的过程。 dbt doc 命令 dbt docs命令有…

【C++】map和set的介绍以及用法

个人主页 文章目录 ⭐一、系列式容器和关联式容器&#x1f680;二、set的使用1. set类的介绍2. set的构造3. set的迭代器4. set的常用函数 &#x1f3a1;三、multiset&#x1f384;四、map类的使用1. map类的介绍2. map的构造3. map的迭代器4. map的operator[]5. map的常用函数…

git删除错误的commit

文章目录 1、git删除错误的commit2、.gitignore配置文件不生效的问题 1、git删除错误的commit git的流程如图&#xff1a; 当某次失误造成commit的版本有问题&#xff0c;需要回退到正常的版本修改后重新add。 首先通过git log查看commit提交记录&#xff0c;可以看到HEAD-…

【在Linux世界中追寻伟大的One Piece】信号捕捉|阻塞信号

目录 1 -> 信号捕捉初识 2 -> 阻塞信号 2.1 -> 信号其他相关常见概念 2.2 -> 在内核中的表示 2.3 -> sigset_t 2.4 -> 信号集操作函数 2.5 -> sigprocmask 2.6 -> sigpending 3 -> 捕捉信号 3.1 -> 内核如何实现信号的捕捉 3.2 ->…

在Spring Boot中具有多个实现的接口正确注入的六种方式

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 在Spring Boot中&#xff0c;当一个接口具有多个实现时&#xff0c;正确地将这些实现注入到需要使用它们的地方是一个常见的需求。以下是在Spring Boot中实现这一目标的六种方式&#xff1a; 1. 使用Autowir…

Apple A18 和 A18 Pro 的裸晶照揭示出兩款處理器有著不同的設計

向來蘋果在發布使用新晶片的設備後&#xff0c;就會有人為新晶片進行詳細剖析&#xff0c;看看蘋果在新處理器上面又使用了什麼新技術。如今 iPhone 16 系列已經推出&#xff0c; Apple A18 和A18 Pro 兩款處理器自然也成為了研究對象。最近就有機構將 Apple A18 和 A18 Pro 兩…

雷池社区版本SYSlog使用教程

雷池会对恶意攻击进行拦截&#xff0c;但是日志都在雷池机器上显示 如何把日志都同步到相关设备进行统一的管理和分析呢&#xff1f; 如需将雷池攻击日志实时同步到第三方服务器, 可使用雷池的 Syslog 外发 功能 启用 Syslog 外发 进入雷池 系统设置 页面, 配置 Syslog 设置…