什么是计算机文件

内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。

一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。

成千上万个文件如果不加分类放在一起,用户使用起来显然非常不便,因此又引入了树形目录(目录也叫文件夹)的机制,可以把文件放在不同的文件夹中,文件夹中还可以嵌套文件夹,这就便于用户对文件进行管理和使用,正如 Windows 的资源管理器呈现的那样。

一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别,这是从文件的功能进行分类的。从数据存储的角度来说,所有的文件本质上都是一样的,都是由一个个字节组成的,归根到底都是 0、1 比特串。不同的文件呈现出不同的形态(有的是文本,有的是视频等等),这主要是文件的创建者和解释者(使用文件的软件)约定好了文件格式。

所谓“格式”,就是关于文件中每一部分的内容代表什么含义的一种约定。例如,常见的纯文本文件(也叫文本文件,扩展名通常是“.txt”),指的是能够在 Windows 的“记事本”程序中打开,并且能看出是一段有意义的文字的文件。文本文件的格式可以用一句话来描述:文件中的每个字节都是一个可见字符的 ASCII 码。

除了纯文本文件外,图像、视频、可执行文件等一般被称作“二进制文件”。二进制文件如果用“记事本”程序打开,看到的是一片乱码。

所谓“文本文件”和“二进制文件”,只是约定俗成的、从计算机用户角度出发进行的分类,并不是计算机科学的分类。因为从计算机科学的角度来看,所有的文件都是由二进制位组成的,都是二进制文件。文本文件和其他二进制文件只是格式不同而已。

实际上,只要规定好格式,而且不怕浪费空间,用文本文件一样可以表示图像、声音、视频甚至可执行程序。简单地说,如果约定用字符 ‘1’、‘2’、…、‘7’ 表示七个音符,那么由这些字符组成的文本文件就可以被遵从该约定的音乐软件演奏成一首曲子。

下面再看一个用文本文件表示一幅图像的例子:一幅图像实际上就是一个由点构成的矩阵,每个点可以有不同的颜色,称为像素。有的图像是 256 色的,有的是 32 位真彩色(即一 个像素的颜色用一个 32 位的整数表示)的。

以 256 色图像为例,可以用 0~255 这 256 个数代表 256 种颜色,那么每个像素就可以用一个数来表示。再约定文件开始的两个数代表图像的宽度和高度(以像素为单位),则以下文本文件就可以表示一幅宽度为 6 像素、高度为 4 像素的 256 色图像:
6 4
24 0 38 129 4 154
12 73 227 40 0 0
12 173 127 20 0 0
21 73 87 230 1 0

这个“文本图像”文件的格式可以描述为:第一行的两个数分别代表水平方向的像素数目和垂直方向的像素数目,此后每行代表图像的一行像素,一行中的每个数对应于一个像素,表示其颜色。理解这一格式的图像处理软件就可以把上述文本文件呈现为一幅图像。视频是由每秒 24 幅图像组成的,因此用文本文件也可以表示视频。

上面用文本文件表示图像的方法是非常低效的,浪费了太多的空间。文件中大量的空格是一种浪费。另外,常常要用 2 个甚至 3 个字符来表示一个像素,也造成大量浪费,因为用一个字节就足以表示 0~255 这 256 个数。因此,可以约定一个更节省空间的格式来表示一个 256 色的图像,此种文件格式的描述如下:文件中的第 0 和第 1 个字节是整数 n,代表图像的宽度(2 字节的 n 的取值范围是 0~65 535,说明图像最多只能是 65 535 个像素宽),第 2 和第 3 个字节代表图像的高度。接下来,每 n 个字节表示图像的一行像素,其中每个字节对应于一个像素的颜色。

用这种格式存储 256 色图像,比用上面的文本格式存储图像能够大大节省空间。在“记事本”程序中打开它,看到的就会是乱码,这个图像文件也就是所谓的“二进制文件”。

真正的图像文件、音频文件、视频文件的格式都比较复杂,有的还经过了压缩,但只要文件的制作软件和解读软件(如图像查看软件,音频、视频播放软件)遵循相同的格式约定,用户就可以在文件解读软件中看到文件的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564159.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下阻塞的系统调用,Linux下文件的阻塞与非阻塞对部分系统调用的影响

1.基本概念所谓的阻塞,即内核在对文件操作I/O系统调用时,如果条件不满足(可能需要产生I/O),则内核会将该进程挂起。非阻塞则是发现条件不满足就会立即返回。此外需要注意的是非阻塞并不是轮询,不然就和阻塞没多大区别了&#xff0…

C++文件类

C 标准类库中有三个类可以用于文件操作,它们统称为文件流类。这三个类是: ifstream:用于从文件中读取数据。ofstream:用于向文件中写人数据。fstream:既可用于从文件中读取数据,又可用于 向文件中写人数据。…

window10内核Linux,windows 10中发布完整的Linux内核

5月8日消息: 近年来,微软对Linux开发者社区的支持令许多人感到惊讶,包括将诸如Bash shell之类的东西引入到Windows,或者在Windows 10中支持原生OpenSSH,甚至包括Windows应用商店上架了Ubuntu、SUSE Linux和Fedora。现在…

C++ open 打开文件

在对文件进行读写操作之前,先要打开文件。打开文件有以下两个目的: 1 . 通过指定文件名,建立起文件和文件流对象的关联,以后要对文件进行操作时,就可以通过与之关联的流对象来进行。 2 . 指明文件的使用方式。使用方…

c语言窗口炸弹代码,C语言实现数字炸弹小游戏

本文实例为大家分享了C语言实现数字炸弹小游戏的具体代码,供大家参考,具体内容如下使用的是C语言# 内容#include#includeint main(){//变量char c_TheRequest 1;//开始界面的字符int in_Deltar 1,in_EnteredNumber,in_Sig;//游戏中输入数字及其判定所需…

C++ 文本文件的读取和写入

使用文件流对象打开文件后,文件就成为一个输入流或输出流。对于文本文件,可以使用 cin、cout 读写。 流的成员函数和流操纵算子同样适用于文件流,因为 ifstream 是 istream 的派生类,ofstream 是 ostream 的派生类,fs…

C++ 移动和获取文件读写指针

在读写文件时,有时希望直接跳到文件中的某处开始读写,这就需要先将文件的读写指针指向该处,然后再进行读写。 ifstream 类和 fstream 类有 seekg 成员函数,可以设置文件读指针的位置;ofstream 类和 fstream 类有 seekp…

程序设计基础——c语言篇,C语言程序设计基础篇.ppt

C语言程序设计基础篇C 语言程序设计—基础篇 第 2 章 数据类型和输入输出 2.1 数据类型 著名计算机科学家沃思提出: 程序=数据结构+算法 例如:学生各科成绩及总分排队问题。 成绩存放 –– 数据结构 排队方法 –– 算法 在此, 存放…

文件的文本打开方式和二进制打开方式的区别

在 UNIX/Linux 平台中,用文本方式或二进制方式打开文件没有任何区别。 在 UNIX/Linux 平台中,文本文件以\n(ASCII 码为 0x0a)作为换行符号;而在 Windows 平台中,文本文件以连在一起的\r\n(\r的…

c语言scanf函数隐藏的缓冲区,零基础学C语言 笔记四 Scanf函数清除缓冲区

Scanf函数清除缓冲区之前涉及到scanf会先到缓冲区看看是否存在数据,若存在数据,就直接拿缓冲区的数据过来使用,这就涉及到了一个问题,那如果缓冲区的数据不是我想要的呢?方法一:我们用scanf吸收掉我们的代码…

c语言中exchange函数,exchange

exchange描述 (Description)它原子地替换原子对象的值并获得先前保存的值。声明 (Declaration)以下是std :: atomic :: exchange的声明。T exchange( T desired, std::memory_order order std::memory_order_seq_cst );C11T exchange( T desired, std::memory_order order st…

C++ 流类和流对象

程序中常用的 cin 和 cout,分别用于从键盘输入数据和向屏幕输出数据(简称为标准 I/O)。除此之外,程序还可以从文件中读入数据,以及向文件中写入数据(简称为文件 I/O)。 数据输入和输出的过程也是数据传输的…

c语言float判断相等,c/c++ 比较两个浮点数相等

首先&#xff0c;两个 if 是一样的。浮点数和整数比较时&#xff0c;整数被转为浮点数。然后&#xff0c;i 为什么不等于 10.0&#xff1f;因为它只会等于这些值&#xff1a;>>> def gen():... i 0... while i < 10:... i 0.1... yield i...>>> L list…

C++ cout格式化输出

希望按照一定的格式进行输出&#xff0c;如按十六进制输出整数&#xff0c;输出浮点数时保留小数点后面两位&#xff0c;输出整数时按 6 个数字的宽度输出&#xff0c;宽度不足时左边补 0&#xff0c;等等。C 中的 cout 对象则使用流操作算子&#xff08;你也可以叫做格式控制符…

C语言按各科分数段统计人数,(更新啦)学校学生成绩统计通用模板(科目、分数、统计分数段等均可自定,班级数、学生人数不受限制)...

更新说明&#xff1a;1、增加了导入、导出数据功能。2、该功能可以实现版本更新时不用手动复制数据&#xff0c;可实现一键导入导出。导语微信号☞gdpc-service这是一款适用于学校平时统一考试成绩统计表。这是长期根据学校的需求设计出的成绩统计&#xff0c;学生成绩清晰明了…

C++ 输出单个字符

在 C 程序中一般用 cout 和输出运算符 << 实现输出&#xff0c;cout 流在内存中有相应的缓冲区。但有时用户还有特殊的输出需求&#xff0c;例如只输出一个字符。 ostream 类除了提供上一节介绍过的用于格式控制的成员函数外&#xff0c;还提供了专门用于输出单个字符的…

ndows10同时打印多份文档,Windows10如何同时重命名多个文件

在Win10系统中整理重要文件时&#xff0c;很多用户都会对文件进行重命名&#xff0c;以便节省更多的时间。而如果文件数量非常多的话&#xff0c;我们就需要对其进行批量重命名。那么&#xff0c;这该如何操作呢&#xff1f;今天&#xff0c;小编就给大家分享一下Win10系统同时…

C++ 读取结束的判断

cin 可以用来从键盘输入数据&#xff1b;将标准输入重定向为文件后&#xff0c;cin 也可以用来从文件中读入数据。在输入数据的多少不确定&#xff0c;且没有结束标志的情况下&#xff0c;该如何判断输入数据已经读完了呢&#xff1f; 从文件中读取数据很好办&#xff0c;到达…

c语言指针算法分析怎么写,什么叫指针算法啊??

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Pointer arithmetic should not be used.This rule refers to explicitly calculating pointer values. Any such pointer value then has thepotential to access unintended or invalid memory addresses. This is an area where…

C++ 读取单个字符

get() 是 istream 类的成员函数。 int get();此函数从输入流中读入一个字符&#xff0c;返回值就是该字符的 ASCII 码。如果碰到输入的末尾&#xff0c;则返回值为 EOF。 EOF 是 End of File 的缩写。istream 类中从输入流&#xff08;包括文件&#xff09;中读取数据的成员函…