探索文件IO奥秘:初识文件
今天小编来分享下文件。
那么对于文件这方面,其实大家是很熟悉的了,毕竟我们日常生活中接触不少了。
比如像是一些文档、音视频、图片等等。
其实这些文件是放在狭义内容上。
文件
这是因为,文件的定义是分为广义和狭义的。
狭义的文件:
一般指的是存储在外部介质(硬盘、U盘、USB闪存等)上的数据集合。
这些文件按照一定的格式命名,并存储在特定的目录中,操作系统或者应用程序能够正确访问。
值得注意的是,这个狭义文件还是包括了目录这样的文件。
广义的文件:
这个广义的文件,说法较为广泛。
在计算机这个角度上,硬件设备、软件资源、网络资源等等都会被操作系统认为是文件。
所以说,日常生活接触更多的是,硬盘中的文件。
对于这个硬盘,小编这里要分享几句
硬盘一般分为机械硬盘和固态硬盘。
机械硬盘(HDD):
其包含着以下物理结构:
盘片:由一个或多个磁性盘片组成,每个盘片表面被划分为多个同心圆轨道,每个磁道又被细分为扇区。
磁头:用于读取和写入数据的小型电磁装置,位于每个盘片的上方但不接触盘片表面
致动器臂:连接着磁头,可以移动磁头到盘片上的任何位置。
工作的时候,使用磁盘片存储数据,并通过移动读写头来访问这些数据。
值得注意的是,由于是需要移动读写头,所以其速度是较低的,同时其耐用可靠性也不是很高,
收到冲击和震动的时候,可能会导致数据丢失。
机械硬盘支持顺序和随机读写。
顺序读写较快,随机读写较慢。
毕竟随机读写,每次需要将磁头移动到新位置,消耗时间。
机械硬盘在价格方面是较低的,相对固态硬盘来说。
固态硬盘(SSD):
包含着以下物理结构:
闪存芯片:数据存储在基于NAND技术的闪存芯片中,没有机械部件
控制器:负责管理数据的读取,写入以及内部操作。
缓存:一些固态硬盘,配备DRAM作为缓存,以提高性能。
其工作时,数据访问通过电子信号进行,不需要做任何的机械运动。即数据存储到硬盘哪个位置
,访问速度非常快。
当然它也是支持顺序读写和随机读写。
固态硬盘在价格方面,虽然是有所下降,但是相较于机械硬盘而言,价格还是稍贵的。
那么回归主题。
刚刚讲到了文件是存储到硬盘中的。但是文件的使用,还是依赖于操作系统的。
对于众多文件而言,操作系统想要”安心“读取其内容,所以要对其做出管理。
那么操作系统中会提供一个文件系统模块,对文件进行管理。
文件系统
这个文件系统呢,在Linux和windows中,是不同的。
比如像是在Windows中,它常见的文件系统:
NTFS:是Windows最常用的文件系统,支持大容量存储设备、文件加密(EFS)、权限管理、压缩等功能。它提供了较高的安全性和稳定性。
FAT32:较老的文件系统,兼容性好但有单个文件最大4GB的限制,并且不支持很多现代的安全特性。
exFAT:设计用于闪存驱动器,解决了FAT32的一些局限性,如支持更大的文件大小和分区大小,但缺乏高级的安全功能。
Linux上呢,它常见的文件系统有:
ext4:目前大多数Linux发行版默认使用的文件系统,支持大文件、大容量存储、快速扩展和收缩、延迟分配等特性。
Btrfs:新一代的文件系统,旨在解决ext系列文件系统的局限性,提供快照、透明压缩、子卷管理等高级功能。
XFS:高性能的日志式文件系统,特别适合处理大文件和高吞吐量的应用场景。
分享完这个。
我们知道,文件一般是放在了硬盘上文件夹中。
此时,我们可以观察到这个文件夹的位置可以用这个字符串来描述文件存储的位置。
E:\Downloads
这个字符串呢,就叫路径。
那这个路径为什么使用反斜杠(\)来分隔呢?
这是个历史遗留问题。
这是因为,Windows系统的前身是Dos系统。(Dos:是一种早期的计算机操作系统,主要用于个人电脑,主要通过命令行和用户交互)
而Dos系统正是使用反斜杠进行分隔。
但其他系统,向Linux就是使用斜杠(/)进行分隔的。
后来Windows为了去兼容其他系统用户,也支持了斜杠来分隔。
那么再说回这个路径。
路径
路径分为绝对路径和相对路径。
绝对路径:从盘符开始到文件名结束
比如:E:\openstack_caculate\computer328\Logs\vbox.log
相对路径:相对一个基准路径而言,基准路径不同,对应的相对路径也不同。
比如E:\openstack_caculate\computer328\Logs\,以这个路径为基准
那么vbox.log可以表示为:.\vbox.log
这里的(.)代表的是当前目录的意思
而如若是logs中有一个目录名为abc,那么同时也进去了这个目录
E:\openstack_caculate\computer328\Logs\abc
那么这个vbox.log如何表示呢?
..\vbox.log
此时这里的(..)代表的是上一级目录,这样就可以正确表示了。
那么小编就暂时分享到这里,下篇文章,小编会分享一些,在java中如何对文件进行操作。