如何在C中创建文件头,以便在读取头时可以检测到文件类型?如何为自己的文件格式创建标题?
这样做的正确方法是什么?是否有任何标准要遵循?
我想为我的文件添加一个小标题,以便在读取标题时可以检测到文件类型。
更新(如果你没有帽子):
我想添加一个标题为我自己的文件格式(不是.c和.h文件中),使用C,我会使用C来读取文件,识别并处理它。
如何在C中创建文件头,以便在读取头时可以检测到文件类型?如何为自己的文件格式创建标题?
这样做的正确方法是什么?是否有任何标准要遵循?
我想为我的文件添加一个小标题,以便在读取标题时可以检测到文件类型。
更新(如果你没有帽子):
我想添加一个标题为我自己的文件格式(不是.c和.h文件中),使用C,我会使用C来读取文件,识别并处理它。
您可以在文件的开头写入一些自定义数据,就像存储任何其他数据一样。
例如PGM format指定有存储在第一线图像和最大值的尺寸:
P2
# Shows the word "FEEP" (example from Netpbm main page on PGM)
24 7
15
... picture data continues from here
没有标准,将指定使这种报头的,因为它是非常罕见的做这样的事情。在PGM图片的情况下,您不知道没有此标题的图片尺寸 - 您将读取12个字节,但您不知道它是图片3x4还是6x2 ...
请注意,这种自定义数据是某种你必须预期被存储在文件的开头当你是读它。您可以为自己的文件制作自定义标题,但是请确保将要使用您的文件的人知道它。
许多文件格式都以一个小的ASCII代码或可识别的数字开始,以便可以通过编辑器或十六进制编辑器打开时识别它。这些有时也被称为“幻数”或“文件签名”。例如:
第一个四个字节GIF文件的是GIF
,随后是三个字母版本(87a
或89a
)。
一个zip文件是PK
(原ZIP文件的作者姓名缩写)
前六个字节苹果的二进制plist文件格式是bplist
有一个全面的前两个字节列表here。通常所遵循的是有关文件包含内容的信息,如目录,然后是实际数据。
这听起来像你后面是一个可变长度的头。可变长度标题通常以标题中的项目数开始,因此,例如,如果文件中有5个项目,则标题可能如下所示:
HELIUM3
5
Item1 INDEX
Item2 INDEX
Item3 INDEX
Item4 INDEX
Item5 INDEX
< then all the data after that >
咦?什么“文件类型”?你的意思是“这是一个文本文件”? – 2012-02-08 20:00:32
我明白了!他问如何使用* C创建带有特殊标题的文件。这意味着......太广泛/不是问题/不具有建设性。 – 2012-02-08 20:06:58
这是用于您的本地文件系统吗?这是Mac OS,对吧?在其他文件系统上,文件类型通常由文件扩展名决定。 – 2012-02-08 20:08:20