如何阅读包含不同格式/扩展名的文件?

时间:2015-04-30 15:47:39

标签: c++ file format

我是c +的新手,我想编写一个程序来读取和提取具有不同格式的文件中的数据(例如:.dat)。我只想阅读并从中提取数据。有人说文件头,结构和实体,实际上是什么?

3 个答案:

答案 0 :(得分:1)

基本上,您需要为每种文件格式使用不同的策略(代码)。

扩展名为.txt的文件通常包含ASCII数据,并且易于阅读。

扩展名为.doc的文件包含MS Word的二进制数据,实际上无法用MS Word以外的其他内容读取。

所有其他文件格式都介于这两个极端之间。

文件扩展名会为您提供有关文件内容的提示。通常人们使用扩展名作为实际文件格式的同义词。所以我们说"我有一个.WAV文件"当我们真正意味着"我有一个RIFF / WAVE格式的二进制文件,扩展名为.wav"

某些文件格式(如.WAV .MP3 .TIFF等)包含一个(记录良好的)标题,该标题描述了前几个字节中文件的结构。

所以标题表示:文件的前几个字节,用于描述文件的内容/结构/布局。例如,在.WAV文件的前几个字节中,您可以找到通道数,采样率等,这解释了如何读取,解释并发送到音频设备的文件的其余部分。

其他一些流行的扩展(例如.dat .bin .hex)说的不仅仅是"这是未指定格式/结构的二进制数据。"所以你需要(很多)附加信息来以有意义的方式阅读这些文件。

Wikipedia article about file extensions

Wikipedia article about file formats

答案 1 :(得分:0)

对于每种类型的文件,都会有一个定义格式的规范。可能有标题(有关存储在文件中的数据的信息)和数据结构(在文件中组织实际数据的方式),其他可能只是纯文本文件,其中新行字符分隔行。

要编写代码来解释文件,例如.jpg,您需要获取JPEG的文件格式规范,读取它,然后在代码中实现它。您可以为程序中需要阅读的每种文件格式执行此操作。

答案 2 :(得分:0)

图像,视频,声音,CAD数据,文本处理等常见文件的结构和内容非常复杂。掌握它们会花费你一辈子的时间。

文件通常以签名开头,即少量字节被认为是唯一的,可用于检查文件类型。但根本没有标准化。例如,MS位图图像以字母“BM”开头,而xml内容以字符串开头,如“?xml version =”1.0“encoding =”UTF-8“?”。

标题是文件的初始部分,它提供有关数据本身的信息,例如数据类型和大小,允许正确解释后续数据。例如,TIFF图像格式有一个复杂的标题,在位图数据之前可以包含许多“标记”。

这是一个例子。

enter image description here