编程基础/文件输入和输出
计算机文件是在计算机存储设备上离散记录数据的计算机资源。就像可以将文字写入纸张一样,也可以将信息写入计算机文件。
计算机文件有不同类型,专为不同的目的而设计。一个文件可能被设计用于存储图片、书面消息、视频、计算机程序或各种其他类型的数据。某些类型的文件可以一次存储多种类型的信息。
文件名扩展名通常用于指示文件内容的特征或其预期用途。文件名扩展名通常用句点(句号)与文件名分隔,但在某些系统中它用空格分隔。[1]
通过使用计算机程序,人们可以打开、读取、更改和关闭计算机文件。计算机文件可以重新打开、修改和复制任意次数。[2]
在计算机编程中,标准流是计算机程序在开始执行时与其环境之间预先连接的输入和输出通信通道。三个输入/输出 (I/O) 连接称为标准输入 (stdin - 键盘)、标准输出 (stdout - 最初是打印机) 和标准错误 (stderr - 监视器)。流可以重定向到其他设备和/或文件。在当前环境中,stdout 通常重定向到监视器。[3]
计算机文件存储在辅助存储设备上,并用于随时间维护程序数据。大多数编程语言都有内置函数或库来支持将文件作为文本流进行处理。我们需要了解如何打开、读取、写入和关闭文本文件。以下解释了文件输入/输出术语
文本文件 - 由 ASCII 字符集中的字符组成的文件。文本文件(也称为 ASCII 文本文件)包含字符数据。当我们创建文本文件时,我们通常认为它由一系列行组成。每行都有几个字符(包括空格、标点符号等),我们通常用回车符(ASCII 字符集中的一个字符)结束行。回车符也称为换行符。您很可能已经熟悉 \n 的转义代码,该代码在许多编程语言中用于在字面字符串中指示回车符。
可以通过文本编辑器(记事本)或文字处理程序(Microsoft Word)创建由行组成的典型文本文件。使用文字处理程序时,您通常需要在保存时将输出文件指定为文本 (.txt)。大多数源代码文件是具有唯一文件扩展名的 ASCII 文本文件;例如,C++ 使用 .cpp,C# 使用 .cs,Python 使用 .py 等等。因此,大多数编译器/集成开发环境软件包可用于创建 ASCII 文本文件。
例如,就像我们在 PC 上通过右键单击并创建新的文本文档来创建文本文件一样。在代码中也执行相同的操作。
文件名 - 名称及其扩展名。大多数操作系统对文件名中可以使用哪些字符有限制。例如 Lab_05.txt
因为一些操作系统不允许空格,所以建议您在文件名中需要空格的地方使用下划线。
路径(文件规范) - 文件的位置及其文件名。Filespec 是文件规范的缩写。大多数操作系统有一套关于如何指定驱动器和目录(或穿过多个目录级别的路径)以及文件名的规则。例如:C:\myfiles\cosc_1436\Lab_05.txt
因为一些操作系统不允许空格,所以建议您在创建文件夹或子目录时需要空格的地方使用下划线。
打开 - 您的程序请求操作系统让它访问现有文件或打开新文件。在大多数当前编程语言中,存在文件数据类型,用于文件处理。文件变量将用于存储操作系统分配给正在打开的文件的设备令牌。打开函数或方法用于检索设备令牌,并且通常至少需要两个参数:路径和模式(读、写、追加或其组合)。相应的伪代码将是
Declare File datafile datafile = open(filespec, mode)
打开函数提供来自操作系统的设备令牌的返回值,它存储在名为数据的变量中。
建议您确定是否已正确打开文件。操作系统通常无法打开文件的原因是文件规范错误(拼写错误或在某些操作系统中不区分大小写)或者文件未存储在指定的位置。访问存储在网络或互联网上的文件可能会由于网络错误而失败。
使用条件控制结构处理验证文件是否已正确打开。该结构可以是 if-then-else 语句或 try-catch/try-except 错误处理程序,具体取决于所使用的编程语言。
读取 - 将数据从已打开的设备移动到程序中定义的内存位置。例如
text = read(datafile)
或
text = datafile.read()
写入 - 将数据从程序中定义的内存位置移动到已打开的设备。例如
write(datafile, text)
或
datafile.write(text)
关闭 - 您的程序请求操作系统释放先前打开的文件。关闭文件有两个原因。首先,它释放文件并释放相关的操作系统资源。其次,如果关闭为输出打开的文件;它将清除操作系统的缓冲区并确保所有数据都物理存储在输出文件中。例如
close(datafile)
或
datafile.close()
- 关闭
- 您的程序请求操作系统释放先前打开的文件。
- 设备令牌
- 操作系统提供的键值,用于将设备与您的程序关联。
- 文件名
- 名称及其扩展名。
- 文件规范
- 文件的位置及其文件名。
- 打开
- 您的程序请求操作系统让它访问现有文件或打开新文件。
- 读取
- 将数据从已打开的设备移动到程序中定义的内存位置。
- 流
- 随着时间的推移而提供的数据元素序列。[4]
- stdin
- 标准输入流,通常是键盘。[5]
- stderr
- 标准输出错误流,通常是监视器。[6]
- stdout
- 标准输出流,最初是打印机,但现在通常是监视器。[7]
- 文本文件
- 由 ASCII 字符集中的字符组成的文件。
- 写入
- 将数据从程序中定义的内存位置移动到已打开的设备。