美文网首页
2020-04-18

2020-04-18

作者: 逆流游鱼 | 来源:发表于2020-04-18 20:44 被阅读0次

前言

在我们的电脑内部存储着许许多多的文件,如文本,视频,图片等等,并且每种文件都有对应的存储格式,比如文本文件会用TXT格式进行存储,这种文件可以存储文字,但是无论文本文件的内容多复杂,计算机均会将其转换为二进制数据进行存储。比如下面一长串二进制数据

二进制.png

将这些二进制数据转换为十进制就会变成如下所示的一串数据

十进制.png

转换成这样,还不是我们可以看出来的数据,我们都知道有一种ASCII字符编码标准,可以将上述数字转化成相应的字符,转换方式:比如说第一个字符是72,对应ASCII表中的字符是H,依次 类推可以得出其他的字符,最后结果如下,得到的字符串是Hi, I' m Carrie

转换为字符.png

图像文件

这里以图像为例来看文件是如何存储的,我们所见的图像文件同样也有固定的存储格式,如BMP,PNG,JPG,拿BMP来说,在计算机中,图像由像素组成,每个像素由三种颜色:红,绿,蓝组成,这叫加色三原色,这三种颜色按照不同的比例混在一起可以组成其他颜色。在BMP文件开头部分是元数据,这个元数据用来存储图片的高度、宽度、颜色深度等一些基本属性信息,但不包含图像的具体像素信息。

一般BMP格式的图像数据分为以下一个部分:

  • bmp文件头:提供文件的格式,大小等信息

  • 位图信息头:提供图像的尺寸,位平面数、压缩方式、颜色索引等信息

  • 调色板:可选,如果使用索引来表示图像,调色板就是索引与其对应颜色的映射表

  • 位图数据:图像数据,真正存储图像像素信息的区域

如图所示是BMP文件的格式信息,虚线部分往后均是像素信息,前面均是描述图像的基本属性信息,从基本属性信息可以看出,图像高度、宽度均是4,图像的像素深度是24。表明该图像是一个4x4大小的图像。

图片13.png

由上面可以得到图像像素的颜色深度是24,对应的就是R、G、B各8位(bit),分别对应不同的通道,总共3个通道,因此,每个通道的数值范围是0~255。此外,像素与像素之间是紧密挨着的。下面主要说的位图数据,这部分才是图像像素部分,如下面所示:拿第一个像素举例来说,可以看出第一个像素值分别由R、G、B组成,且对应的值是255、255、255,因此会得到该像素的颜色是白色;紧接着,第二个像素的R、G、B值分别是255、255、0,因此得到该像素的颜色是黄色,依次下去,会得到整张图像,图像如下。

图片12.png

文件的存储

那么文件具体是如何存储在电脑上的呢?通常可以存储文件的硬件包括磁盘,硬盘,U盘等等,但我们可以将这些进行抽象得到一个可以存储的文件模型。我们在电脑中存储的文件多式多样,有File1.txt,File2.txt,File3.txt等等,那么这些文件存储的时候,怎么区分呢?因此,为了能够处理这些文件,计算机处理的方法是,使用一个特殊的目录文件将这些文件进行区分。这个目录文件内包含有文件的名字,文件的创建的时间,文件最后修改时间,文件的拥有者,文件的可读可写属性以及文件的起始位置和长度,如下图所示

图片7.png

文件的处理

文件的存储基本都是按照上面的这种模型,那么文件的添加,删除,拷贝是怎么处理的呢?如下面所示,如果想要给File1文件添加数据,但是往后面添加的话便会覆盖File2文件。为了处理这种情况,文件系统中将存储区域设置成一块一块的,如下图所示。将一个文件分成不同的块,所以当一个块容纳不了的文件,就会额外分配其它块进行存储,所以在目录文件中,还会记录文件的块。

图片8.png

如下图所示,就是将一个文件拆分成不同的块,分开存储。通过这种方式可以看出,文件的大小可以放大或者缩小。

图片6.png

如果想删除文件,只要在目录文件中删除那条记录即可,如下图所示。虽然删除了目录文件中的File3文件的记录,但是并没有真正意义上删除该块的数据,数据仍然保存在原来的块中,直到有新的数据将这个块进行覆盖才真正意义上删除了数据。

图片9.png

碎片

通过上面可以看出,通过将文件按块存储可以有效的实现数据的灵活存储,这种被分配在不同的块中的数据被称为碎片,这种碎片是不可避免的。与此同时,碎片也有一些不足,当我们需要频繁的查看比较大的文件时,如果这时候文件被放置在许许多多的不同块中时,当我们打开文件时,通常会比较卡顿,因为这些数据被分配的块太多时,会使得在读取文件的时候来回寻找,效率肯定非常低下。所以就出现了碎片整理,什么叫碎片整理呢?碎片整理会将分配在不同块的数据进行移动,按照顺序放置在块中。如下图所示,将File1的文件进行碎片整理,合并在一起,其他文件往后挪动,按照顺序放在在块中,这样在读取的时候,就会方便多了。通常在电脑中会有系统软件进行碎片整理,通过这种碎片整理能有效的提高文件的使用效率。

图片10.png

文件分层

上面讨论了文件被放置在一个目录中时,文件的存储。当然我们知道文件中在存储时,是有很多目录嵌套的,如下图所示。

文件分层.png

文件系统在处理这种文件分层也是同样遵循上面文件的存储形式,只不过当目录下还有目录时,上一级目录不仅会记录下面的文件,还会记录下面的子目录。如下图所示,根目录中包含有File1.txt,File2.txt,Book子目录,File3.txt,与此同时Book目录中存放有book1.pdf,book2.pdf,book3.pdf,book4.pdf。由此可见,肯定有一个目录是存储着所有的文件和目录的,这个目录就是这里的根目录,所有的文件均是从根目录开始往下进行存储的。

图片4.png 图片5.png

此外,文件的移动其实也很简单,不会改变文件的存储位置,只会改变文件的记录。举例来说,如果将根目录中的File4.txt拷贝到子目录Book中,只需要在Book子目录中记录File4.txt,并将根目录中的File4.txt的记录删除即可,不需要将其从原来的块中移动到其他的块。如下图所示。

图片14.png

相关文章

网友评论

      本文标题:2020-04-18

      本文链接:https://www.haomeiwen.com/subject/zaiovhtx.html