什么是文件?

什么是文件?

文件是数据存储的基本单位,linux也有着万物皆文件的思想,因此本文想深入探讨一下文件的相关知识。

/boot文件包含启动加载器相关文件,例如linux内核和初始RAM磁盘映像。 /etc包含所有系统级的配置文件,例如文件系统挂载信息、用户账户信息、用户组信息等。 /bin包含基本用户命令的可执行文件,比如ls、cp等等。 ...

文件的分类

不同的操作系统文件的分类有所不同,本文主要以linux为主,windows也有类似的思想,只是在一些概念上有所不同。 在操作系统层面,文件可以被分为以下几类。

  • 普通文件(Regular file) 这类文件一般包含用户数据,比如图像文件、二进制文件、文本文件等等。
  • 目录(Directory) 目录是一种特殊的文件,用于包含其它文件和目录。目录文件可以通过ls指令去查看其内容。
  • 符号链接(Symbolic link) 符号链接是一种指向另一个文件的引用,它允许文件间的快速访问和链接,通常用于创建对常用文件或目录的链接方式。
  • 设备文件(Device file) 这些文件表示系统中的物理设备或特殊的接口,通常分为字符设备文件和块设备文件。字符设备文件允许字符(字节)级的数据处理,而块设备文件则支持批量的数据处理。
  • 命名管道(Named pipe) 它是一种允许进程间通信的特殊文件。数据写入一个命名管道后可以被另一个进程读取,从而实现进程之间的信息传递。

文件格式及其结构组成

文件格式指的是用于存储在计算机文件系统中的数据的编码方式。文件格式能够决定数据如何组织和存储,并且通常与文件拓展名(比如说.jpg.mp4等等)相关联,通过不同的后缀名,能够让操作系统和应用程序合理的处理文件。不同的文件格式适用于不同的应用和数据类型。 下面以.jpg为例,从文件头、段结构、各段内容几个部分来进行分析。

JPG文件分析

文件头

JPG文件通常以两个字节的起始标记开始,称为SOI(Start of Image),其值为0xFFDB。这表示文件的开始。

JPG段结构

JPG文件由多个段来构成,每个段都有特定的标记,后跟一个标记字节。常见的段包括:

  • SOI(Start of Image):0xFFD8
  • APP0(JFIF APP0)
  • SOI(Start of Image):0xFFD8
  • APP0(JFIF APP0 Marker):0xFFE0
  • DQT(Define Quantization Table):0xFFDB
  • SOF0(Start of Frame):0xFFC0
  • DHT(Define Huffman Table):0xFFC4
  • SOS(Start of Scan):0xFFDA
  • EOI(End of Image):0xFFD9 每个段的一般结构如下:
  • 标记头(2字节):0xFF+标记字节
  • 长度字段(2字节):段的总长度,包括长度字段本身
  • 段内容:实际内容 于是一个JPG可以简单的像下面这样表示
    FFD8              -- SOI (Start of Image)
    FFE0 0010 4A464946 000101 000001 0001 0000 -- APP0 (JFIF header)
    FFDB 0043 00 [64 bytes of quantization table] -- DQT (Define Quantization Table)
    FFC0 0011 08 00F0 00A0 03 01 11 00 02 11 01 03 11 01 -- SOF0 (Start of Frame)
    FFC4 001F 00 [Huffman table data] -- DHT (Define Huffman Table)
    FFDA 000C 03 01 00 02 11 03 11 00 3F 00 -- SOS (Start of Scan)
    [compressed image data] FFD9 -- EOI (End of Image) 下面以一个实际的图片来寻找这些数据,可以看到,一个JPG文件就由这些数据分成了一个个小段。 file file

    总结

    文件是数据存储和管理的基本单位,不同类型的文件在操作系统中具有各自独特的功能和作用。从普通文件到目录、符号链接、设备文件和命名管道,每一种文件类型都为系统的高效运行提供了基础。 文件格式决定了数据的组织和存储方式,通过了解如JPEG文件的结构和组成,可以更好地理解和处理图像数据。
  • 25
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zzr-rr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值