学习指南

文件处理

计算机科学· 20 分钟阅读

1. 核心文件生命周期:打开、处理、关闭★★☆☆☆⏱ 5 min

所有文件操作都遵循标准的三步生命周期:打开文件获取访问权限,执行读取或写入操作,完成后关闭文件。关闭文件对于释放系统资源、确保所有内存中的数据都写入永久存储至关重要。

📘 定义

文件模式

指定打开文件可执行哪些操作,以及如何解释文件内容的设置。

例:

常见模式:读取、写入、追加、文本、二进制

📐 例题

编写CIE标准伪代码,以读取模式打开文本文件scores.txt,将第一行输出到控制台,然后关闭文件。

  1. 1

    声明一个文件句柄引用打开的文件,以及一个字符串变量存储读取的行:

  2. 2
    DECLARE FileHandle : FILE
    DECLARE FirstLine : STRING
    
  3. 3

    以只读模式打开文件:

  4. 4
    OPENFILE "scores.txt" FOR READ AS FileHandle
    
  5. 5

    读取第一行,输出它,然后关闭文件:

  6. 6
    READLINE FileHandle, FirstLine
    OUTPUT FirstLine
    CLOSEFILE FileHandle
    

2. 文本文件 vs 二进制文件模式★★★☆☆⏱ 6 min

文本文件将数据存储为人类可读的字符序列,使用ASCII或UTF-8等标准编码。二进制文件直接存储原始二进制数据,更紧凑,并且保留原始数据类型的准确大小。

📐 例题

比较整数123在文本文件和4字节整数二进制文件中的存储方式。

  1. 1

    文本文件中:整数被转换为三个独立字符'1', '2', '3',占用3字节存储空间,在文本编辑器中打开会显示可读文本123

  2. 2

    二进制文件中:整数123的原始4字节二进制值被直接存储,占用4字节存储空间,在文本编辑器中打开会显示不可读的非打印字符。

3. 常见文件操作★★★☆☆⏱ 7 min

除了基础的单行读取,你通常还需要逐行处理整个文件、向现有文件追加新数据,或搜索特定条目。EOF(文件结束)标记用于检测是否已经到达文件内容末尾。

📐 例题

编写伪代码,统计名为data.txt的文本文件的总行数。

  1. 1

    初始化计数器为0,打开文件以供读取:

  2. 2
    DECLARE Count : INTEGER ← 0
    DECLARE CurrentLine : STRING
    OPENFILE "data.txt" FOR READ
    
  3. 3

    循环遍历文件,逐行读取直到到达文件末尾,每次循环递增计数器:

  4. 4
    WHILE NOT EOF("data.txt") DO
      READLINE "data.txt", CurrentLine
      Count ← Count + 1
    ENDWHILE
    
  5. 5

    关闭文件,输出最终计数:

  6. 6
    CLOSEFILE "data.txt"
    OUTPUT "Total lines: " + Count
    
✓ 快速检测

测试你的理解:

  1. 要在不删除现有内容的情况下向已有文件末尾添加新数据,应该使用哪种模式?

    • 读取模式

    • 写入模式

    • 追加模式

    • 二进制模式

    显示答案
    2

    正确!追加模式将新数据添加到文件末尾,而写入模式会覆盖整个现有文件。

4. 文件错误处理★★★★☆⏱ 6 min

文件操作经常会在运行时因常见原因失败:文件不存在、权限错误,或存储设备已满。良好的编程习惯要求检查这些错误并妥善处理,而不是让程序崩溃。

📘 定义

文件未找到错误

常见运行时错误,当程序尝试打开指定路径中不存在的文件时发生。

📐 例题

修改上面的行数统计代码,处理data.txt不存在的情况。

  1. 1

    打开文件后,添加检查确认文件存在,再进行处理:

  2. 2
    OPENFILE "data.txt" FOR READ
    IF NOT FILEEXISTS "data.txt" THEN
      OUTPUT "Error: Input file not found"
      STOP
    ENDIF
    
  3. 3

    行数统计的其余代码保持不变,但程序会向用户输出清晰的错误消息,而不是意外崩溃。

5. 常见陷阱

错误做法:

打开文件后忘记关闭

原因:

会导致系统资源仍被占用,还可能造成数据没有保存到磁盘

正确做法:

完成对打开文件的操作后,一定要添加显式的CLOSEFILE语句

错误做法:

向已有文件添加数据时使用写入模式

原因:

写入模式会覆盖整个现有文件,在添加新数据前清除所有原始内容

正确做法:

要向已有文件末尾添加新数据时使用追加模式

错误做法:

读取下一个条目前不检查EOF

原因:

会导致读取文件结束后的垃圾数据,或在执行过程中出现运行时错误

正确做法:

始终将重复读取操作包装在WHILE NOT EOF()循环中,在内容末尾停止

错误做法:

用和二进制文件相同的方式计算文本文件大小

原因:

文本文件将数据存储为可变长度字符,而二进制文件每个数据类型使用固定大小

正确做法:

文本文件通过统计字符数得到大小;二进制文件则用记录数乘以固定记录大小

错误做法:

读取模式下不处理文件缺失的情况

原因:

阅卷官要求健壮的错误处理,未处理的错误会被扣分

正确做法:

以读取模式打开文件后,一定要添加FILEEXISTS检查

6. 速查表

操作

CIE伪代码

常见用途

打开只读

OPENFILE "f.txt" FOR READ

读取现有文件

打开写入

OPENFILE "f.txt" FOR WRITE

创建/覆盖文件

打开追加

OPENFILE "f.txt" FOR APPEND

向文件末尾添加数据

读取行

READLINE handle, lineVar

读取一行文本

写入行

WRITELINE handle, data

写入一行输出

检查文件结束

NOT EOF(handle)

循环遍历所有内容

检查文件存在

FILEEXISTS "filename"

处理文件缺失错误

关闭文件

CLOSEFILE handle

保存修改,释放资源

真题中的出现

AI 根据考纲规律估算的考点位置,请对照官方真题核实准确性。仅作复习重点参考。

  • 2022 · 12

    文本文件搜索题

  • 2023 · 13

    二进制文件记录写入题

  • 2024 · 12

    文件错误处理题

下一步

文件处理是CIE A-Level计算机科学理论卷和实践卷的核心基础技能。它经常在理论多选题中考察,也是大多数编程实践任务的核心部分,因此掌握完整的文件生命周期对于拿到满分至关重要。在熟练掌握顺序文件处理后,你可以继续学习建立在此基础上的更高级存储概念。你也可以广泛练习错误处理,提高考试中编程的健壮性。