返回

文件操作进阶指南:文本和二进制文件读写详解

Android

C++ 文件操作指南:掌握文本和二进制文件读写

作为一名程序员,熟练的文件操作技能至关重要,C++ 为我们提供了强大的库,让我们可以轻松地处理各种文件类型。本文将深入探讨 C++ 中的文件操作,从文件打开到读写,涵盖文本文件和二进制文件,并辅以代码示例,让您立即开始操作。

文件操作概览

文件操作允许我们与计算机文件进行交互,读取、写入和修改数据。在 C++ 中,这涉及创建文件句柄,用于访问和控制文件。

文件打开

打开文件是建立与文件通信的桥梁。C++ 提供了四种文件打开方法:

  • fopen() 函数: 通用文件打开函数,适用于各种文件类型。
  • freopen() 函数: 重新定向已打开文件到另一个文件。
  • fdopen() 函数: 将文件符与文件流关联。
  • open() 函数: 以低级方式打开文件,返回文件符。

文件读写

文件打开后,我们就可以读写数据了:

  • fread() 函数: 从文件中读取数据。
  • fwrite() 函数: 将数据写入文件。
  • fscanf() 函数: 格式化读取文件中的数据。
  • fprintf() 函数: 格式化写入数据到文件。

文件关闭

读写完成后,关闭文件至关重要,它释放资源并确保数据完整性:

  • fclose() 函数: 关闭文件。
  • fflush() 函数: 刷新文件缓冲区,将内容写入文件。

代码示例

以下代码演示了文本文件和二进制文件的读写:

文本文件

#include <iostream>
#include <fstream>

int main() {
    // 打开文本文件
    ifstream inFile("input.txt");
    if (!inFile) {
        cerr << "Error: could not open input file" << endl;
        return 1;
    }

    // 从文件中读取数据
    string line;
    while (getline(inFile, line)) {
        cout << line << endl;
    }

    // 关闭文件
    inFile.close();

    // 打开文本文件
    ofstream outFile("output.txt");
    if (!outFile) {
        cerr << "Error: could not open output file" << endl;
        return 1;
    }

    // 将数据写入文件
    outFile << "Hello, world!" << endl;

    // 关闭文件
    outFile.close();

    return 0;
}

二进制文件

#include <iostream>
#include <fstream>

int main() {
    // 打开二进制文件
    ifstream inFile("input.bin", ios::binary);
    if (!inFile) {
        cerr << "Error: could not open input file" << endl;
        return 1;
    }

    // 从文件中读取数据
    int number;
    inFile.read((char*)&number, sizeof(number));

    // 关闭文件
    inFile.close();

    // 打开二进制文件
    ofstream outFile("output.bin", ios::binary);
    if (!outFile) {
        cerr << "Error: could not open output file" << endl;
        return 1;
    }

    // 将数据写入文件
    outFile.write((char*)&number, sizeof(number));

    // 关闭文件
    outFile.close();

    return 0;
}

总结

掌握 C++ 文件操作可以极大地增强您的编程能力。通过理解文件打开、读写和关闭的概念,您可以轻松地处理文本和二进制文件,为您的应用程序奠定坚实的基础。

常见问题解答

  • 如何知道文件是否打开成功?
    通过检查文件句柄,如果不为 NULL,则表明打开成功。

  • 文件打开模式有哪些?
    有几种模式可用于打开文件,例如只读、只写、读写等。

  • 如何从二进制文件中读取和写入自定义数据结构?
    您可以使用 memcpy() 函数读写自定义数据结构。

  • 如何在文件末尾追加数据?
    您可以使用 fseek() 函数将文件指针定位到文件末尾,然后进行写入。

  • 如何使用 C++ 操作大文件?
    您可以使用 fstream::seekg() 和 fstream::seekp() 函数来处理大文件。