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

news2024/12/24 9:45:50

前言

🌟🌟本期讲解关于文件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.coloradmin.cn/o/2210224.html

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

相关文章

什么是Qseven?模块电脑(核心板)规范标准简介二

1.概念 Qseven是一种通用的、小尺寸计算机模块标准,适用于需要低功耗、低成本和高性能的应用。 Qseven模块电脑(核心板)采用230Pin金手指连接器 2.Qseven的起源 Qseven最初是由Congatec、SECO、MSC三家欧洲公司于2008年发起,旨在…

【fisco学习记录2】多群组搭建

说明 文档参考: 多群组部署 — FISCO BCOS 2.0 v2.11.0 文档 (fisco-bcos-documentation.readthedocs.io) 多群组搭建之前,先暂停之前的单群组,并删除: cd fisco bash nodes/127.0.0.1/stop_all.sh rm -rf nodes/ 实现图&…

如何从数码相机中恢复已删除的照片

照片恢复是恢复已删除照片的最佳工具,带有恢复 RAW 照片的选项。在本文中,我们将解释如何检索已删除的照片。 不仅适用于专业摄影师,而且对于像我们这样喜欢捕捉回忆的人来说,Moments 相机是一种重要的数字设备。可悲的是&#x…

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

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

泛谈阿里vs美团订单存储架构演进

泛谈阿里vs美团订单存储架构演进 1. 订单存储介绍 订单的存储背后支撑创单后的系列用户活动,围绕着业务的发展,大厂的订单的数据日益剧增 在手淘订单列表,我们可以看见天猫、飞猪、淘票票等诸多 BU 的订单 在美团的订单列表,我…

[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块

[Python学习日记-46] Python 中第三方开源模块的安装、使用与上传自己写的模块 简介 下载与安装 如何使用安装好的第三方开源模块 如何上传自己写的模块到 PyPi 简介 在前面的模块介绍和导入当中主要介绍的都是 Python 内置的一些模块,我们把它称为标准库&#…

string模拟优化和vector使用

1.简单介绍编码 utf_8变长编码,常用英文字母使用1个字节,对于其它语言可能2到14,大部分编码是utf_8,char_16是编码为utf_16, char_32是编码为utf_32, wchar_t是宽字符的, utf_16是大小为俩个字节&a…

在线书画展:艺术与科技携手,拓宽艺术之路

在数字化浪潮的推动下,在线书画展正成为艺术与科技完美融合的典范。它不仅拓宽了艺术的传播渠道,提升了个人书画家的开展效率,还促进了艺术家们的职业发展。以下是对在线书画展几大优势的深入探讨。 一、拓宽艺术传播渠道 全球化展示&#x…

前端开发笔记--html 黑马程序员2

文章目录 前端常用标签一、标题标签二、段落标签和换行标签和水平线标签三、文本格式化标签![请添加图片描述](https://i-blog.csdnimg.cn/direct/87583fa23fe04229b016912051f3fc45.png)四、盒子标签五、图像标签六、连接标签七、注释和特殊字符 八、表格标签的基本使用九、列…

图书馆自习室座位预约管理微信小程序+ssm(lw+演示+源码+运行)

摘 要 随着电子商务快速发展世界各地区,各个高校对图书馆也起来越重视.图书馆代表着一间学校或者地区的文化标志,因为图书馆丰富的图书资源能够带给我们重要的信息资源,图书馆管理系统是学校管理机制重要的一环,,面对这一世界性的新动向和新…

Python | Leetcode Python题解之第475题供暖器

题目&#xff1a; 题解&#xff1a; class Solution:def findRadius(self, houses: List[int], heaters: List[int]) -> int:ans 0houses.sort()heaters.sort()j 0for i, house in enumerate(houses):curDistance abs(house - heaters[j])while j 1 < len(heaters) …

计算机网络——运输层(可靠传输、超时重传、选择确认、流量控制和拥塞控制、TCP连接和释放)

TCP可靠传输的实现 我们假定数据传输只在一个方向进行&#xff0c;即A发送数据&#xff0c;B给出确认。这样的好处是使讨论限于两个窗口&#xff0c;即发送方A的发送窗口和接收方B的接收窗口。 以字节为单位滑动窗口 发送方构造窗口 窗口前沿和后沿的移动情况 描述发送窗口的状…

《使用Gin框架构建分布式应用》阅读笔记:p1-p19

《使用Gin框架构建分布式应用》学习第1天&#xff0c;p1-p19总结&#xff0c;总计19页。 一、技术总结 1.go get & go install 执行go get 或者 go install 命令后package会被安装到哪里&#xff1f;参考&#xff1a;https://go.dev/ref/mod#go-install VSCode结合WSL使…

springboot001基于SpringBoot的在线拍卖系统(论文+源码)_kaic

医护人员排班系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了医护人员排班系统的开发全过程。通过分析医护人员排班系统管理的不足&#xff0c;创建了一个计算机管理医护人员排班系统的方案。文章介绍了医…

C++多线程的Demo(二)

前言 接上文&#xff0c;这次对C多线程和并发有了一些粗浅的理解&#xff0c;上一篇文章如下&#xff1a; C多线程的Demo&#xff08;一&#xff09;_c demo-CSDN博客 详细讲解join()和detach(): 每一个程序至少拥有一个线程&#xff0c;那就是执行main()函数的主线程&#xf…

python 画图|三维散点图输出

【1】引言 在前述学习进程中&#xff0c;已经初步掌握三维动画输出和散点图动画输出基本技能&#xff0c;可通过下述链接直达&#xff1a; python画图|散点图动态输出-CSDN博客 python动画教程|Animations using Matplotlib-官网教程程序解读_如何用python制作微动画-CSDN博…

【实时计算 Flink】DataStream作业大状态导致反压的调优原理与方法

状态管理不仅影响应用的性能&#xff0c;还关系到系统的稳定性和资源的有效利用。如果状态管理不当&#xff0c;可能会导致性能下降、资源耗尽&#xff0c;甚至系统崩溃。Flink Datastream API在状态管理方面提供了非常灵活的接口&#xff0c;您可以采取相关措施来确保状态大小…

Word粘贴时出现“文件未找到:MathPage.WLL”的解决方案

解决方案 一、首先确定自己电脑的位数&#xff08;这里默认大家的电脑都是64位&#xff09;二、右击MathType桌面图标&#xff0c;点击“打开文件所在位置”&#xff0c;然后分别找到MathPage.WLL三、把这个文件复制到该目录下&#xff1a;C:\Program Files\Microsoft Office\r…

Ubuntu 详解| Ubuntu ssh| Ubuntu apt命令大全| Ubuntu性能优化| Ubuntu换镜像源

Ubuntu 是Debian开源linux系统体系下的子分支之一 Debian-ubuntu 和它一样的还有 kali&#xff08;一款渗透测试软件&#xff09; Debian-kali 小白参考 &#xff1a;Centos 7.9 安装 图解版 小白必看 最新_centos7.9-CSDN博客文章浏览阅读2.5k次&#xff0c;点赞…

vue3.0 + vite:中使用 sass

1、安装依赖 npm i sass sass-loader --save-dev 在项目的src/assets文件夹下新建style/index.scss 文件 2、在 vite.config.ts 中加&#xff1a; resolve: {alias: {: fileURLToPath(new URL(./src, import.meta.url))} }, css: {// 配置 SCSS 支持preprocessorOptions: {s…