点击查看【bilibili】

文件格式

文件:一整块有关系的数据,文件的底层是一长串二进制数
文件格式:虽然可以随意存储文件数据,但按格式存会更方便

文本文件:TXT格式

ASCII 编码:一种字符编码标准,将文件原本的 二进制数 解码为 英文、数字和其他字符

音频文件:WAV格式

元数据 metadata

  • 元数据是数据的数据。eg. 音频文件的码率、单声道 or 立体声等信息
  • 元数据存储在文件开头,在实际数据之前,因此也称为 文件头 Header

image.png

图片文件:BMP格式

位图:bitmap,文件后缀为 .bmp,用于存储图片文件
实例:如下图所示,该图片 4像素宽 x 4像素高,颜色深度为 24 位,即 8 bit 表示红色, 8 bit 表示黄色, 8 bit 表示蓝色。
image.png
image.png

文件系统:计算机如何存文件

发展

  • 早期计算机存储容量很小,整个存储器就像一个文件,数据从头存到尾,直到占满
  • 随着计算能力和存储容量的提高 ,多文件变得非常必要

优点

  • 文件系统使我们不必关心文件在磁带或磁盘的具体位置,整理和访问文件更加方便
  • 使得我们像普通用户一样直观操纵数据,比如打开和整理文件

目录文件 Directory File

作用

  • 为了存多个文件,需要一个特殊文件(即目录文件)来记录其他文件的文件名、扩展名、存储位置、元数据(eg.文件创建时间、最后修改时间、文件所有者、是否能读/写等)等信息。
  • 文件系统专门负责管理文件

位置:目录文件通常存在开头(位置0),以便于查找

现代文件系统会做以下两件事:

  • 把空间划分成一块块,使得有一些 “预留空间” 可以方便改动,也方便管理。目录文件记录文件存储在哪些块里。
  • 拆分文件,存储在多个块中。目录文件存储文件的位置时存储的是多个块,而不止是一块。因此,只要分配块,文件就可以轻松增大缩小。

举例,如下图所示:

  • 文件”todo.txt”存储在BLOCK1,扩增后超出BLOCK1的容量,则另外增加了BLOCK5
  • 删除文件“carrie.bmp”,只是将目录里该文件的信息删除了,并没有擦除数据。因此在BLOCK2被新数据覆盖之前,原来的数据还在,所以可以恢复数据

image.png

碎片整理 defragmentation

碎片 fragmentation:文件的增删改,不可避免会导致碎片(文件散落在各个块中)。
问题:对很多存储技术来说,碎片是坏事。eg. 如果上图的 todo.txt 存在磁带上,读取文件要先读块1, 然后快进到块5,然后往回转到块2,来回转个半天。现实世界中,大文件可能存在数百个块里,你可不想等五分钟才打开文件,因此碎片会造成问题。
碎片整理:计算机会把数据来回移动,排列成正确的顺序
image.png

平面文件系统 Flat File Systems

定义:文件都在同一个层次,都存储在同一个目录里。也就是没有子目录,没有目录嵌套。
特点:早期计算机存储空间小,只有十几个文件,平面文件系统就够用了

分层文件系统

起源:计算机容量爆炸式增长,文件数量也飞速增长,使得所有文件都存在同一层变得不切实际
定义:文件夹套文件夹,目录文件不仅要指向文件,还要指向目录
优点

  • 能做无限深度的文件夹,便于文件分类整理
  • 可以轻松移动文件:如果想把 theme.wav 从根目录移到音乐目录,不用移动任何数据块,只需在根目录删除该记录,在音乐目录增加该记录