文件大小是指文件中包含的数据量,以字节计数。1 字节由 8 位组成。元数据报告会显示带有单位的文件大小,例如,对于一个大小为 55,366 字节的文件,会显示为 55 kB。
文件大小不同于图像尺寸。图像尺寸统计的是图片中的像素数量,文件大小统计的是文件中的每一个字节。
数值的来源
文件大小通常不是文件内部的一个字段。文件系统会保存每个文件的大小,以及它的文件名和修改日期。
元数据读取程序 ExifTool 会从文件系统中读取文件大小,并在其 System 分组中列出。ExifTool 会将文件大小标记为你不能写入或编辑的值。
有些格式也会在文件内部存储大小信息。一个 WebP 图像以一个头部开始,头部中存储了以字节为单位的文件大小。这个数字不包含前 8 个字节,所以会比完整文件大小少 8 字节。
该数值的格式
文件大小的原始值是一个以字节为单位的整数,例如 55366。在显示时,ExifTool 默认使用 SI 单位,其中 1 kB 为 1,000 字节。小于 2,000 字节的文件会以字节显示,更大的文件则以 kB、MB 或 GB 显示。
FFmpeg 项目的 ffprobe 程序会以字节为单位,将音频或视频文件的大小报告为 size。在其默认输出格式中,如果无法测量大小,ffprobe 会显示 N/A。而 JSON 和 XML 输出格式则会直接省略这个大小字段。
为什么 1 kB 可以表示 1,000 或 1,024 字节
有两种计算更大数据单位的方式。SI 前缀(如 kilo 和 mega)按 1,000 为步进计数。二进制前缀则按 1,024 为步进计数,即 2 的 10 次方。
1998 年 12 月,国际电工委员会 (IEC) 批准了二进制前缀的名称。例如 kibi (Ki)、mebi (Mi) 和 gibi (Gi)。有些程序在按 1,024 为步进计数时仍然使用 KB、MB 或 GB 的写法。
- 1 千字节 (kB) 等于 1,000 字节,1 千二进制字节 (KiB) 等于 1,024 字节。
- 1 兆字节 (MB) 等于 1,000,000 字节,1 兆二进制字节 (MiB) 等于 1,048,576 字节。
- 1 吉字节 (GB) 等于 1,000,000,000 字节,1 吉二进制字节 (GiB) 等于 1,073,741,824 字节。
- 1 太字节 (TB) 等于 1,000,000,000,000 字节,1 太二进制字节 (TiB) 等于 1,099,511,627,776 字节。
因此,同一个文件可能会显示两个不同的数字。一个大小为 55,366 字节的文件,在 SI 单位下约为 55 kB,而在二进制单位下约为 54 KiB。
文件大小和磁盘占用空间
文件系统以簇(cluster)或分配单元为块来给文件分配空间。当文件增大时,文件系统会按整簇增加空间。所以文件在磁盘上占用的空间通常会比它的文件大小略大。
Windows 会在文件属性中以“大小”和“占用空间”显示这两个数字。簇大小在对驱动器进行格式化时设定,通常取决于驱动器的容量。同一个文件在 U 盘和硬盘上占用的空间可能不同,但它的文件大小保持不变。
它的重要性
文件大小可能会决定你可以把文件存储在哪里。使用 FAT32 文件系统的驱动器,每个文件最大为 4 GiB。NTFS 和 exFAT 则允许更大的文件。
对于音频和视频文件,文件大小与比特率和时长相关。FFmpeg 会将总体比特率计算为:文件大小(字节)乘以 8,再除以时长(秒)。