C++文件操作介绍
文件是指存储在计算机文件系统中的数据集合。文件可以包含各种类型的信息,例如文本、图像、音频视频等。在 C++中,文件是一种数据流,可以用于读取或写入数据。C++提供了一系列的文件操作函数,用于实现对文件的读取、写入、打开、关闭等操作。
在 C++中,文件可以分为文本文件和二进制文件。这两种文件的区别在于它们存储数据的方式:
文本文件:文本文件以字符形式存储数据,例如 ASCII 或 Unicode 字符。每个字符占用一个字节的空间。文本文件通常用于存储文本信息,如代码、配置文件、文档等。
二进制文件:二进制文件以字节形式存储数据,每个数据项可以是任意长度。二进制文件通常用于存储非文本信息,如图像、音频、视频等。
文本文件是包含可读字符的文件,例如.txt和.csv等文件通常是文本文件。图像、音频和视频等文件是二进制文件,因为它们包含嵌入在其中的二进制数据。图像文件通常包括.bmp、.jpg、.png等格式,音频文件通常包括.wav、.mp3等格式,视频文件通常包括.mp4、.mov等格式。
文件的路径可以使用字符串表示。文件路径可以是相对路径或绝对路径。
相对路径是相对于当前工作目录的路径。当前工作目录是执行程序时操作系统指定的默认路径。例如,如果当前工作目录是 D:\Test\John,而文件位于该目录下的子目录 Files 中,可以使用相对路径来表示文件路径:"Files/myfile.txt"。
绝对路径是文件的完整路径,包括驱动器名(在Windows系统中)或根目录符号(在类Unix系统中)。绝对路径从文件系统的根目录开始。例如,在Windows系统中,文件 myfile.txt 位于 D:\Test\John\Files,可以使用绝对路径来表示文件路径:" D:\Test\John\Files/myfile.txt"。
下面介绍常用的文件操作介绍。
C++文件操作步骤
☆ C方式的文件操作步骤
引入必要的头文件,C文件需要使用到<cstdio>(stdio.h)库,在程序开始前引入头文件#include <cstdio>或#include <stdio.h>
1.打开文件:通过使用fopen()函数创建文件指针来打开文件。
这个函数需要两个参数:文件名和打开模式。
2.读写文件内容:
使用fgetc()函数从文件中读取一个字符。使用fputc()函数向文件中写入一个字符。
使用fgets()函数从文件中读取一行字符串。使用fputs()函数将字符串写入文件。
等
3.关闭文件:使用fclose()函数关闭文件。
另外,需要注意文件操作过程可能会遇到一些异常情况,如文件打开失败、文件读写失败等等,需要进行相应的处理来保证程序的正确性和健壮性。
例如:
#include <stdio.h>
int main() {
// 打开文件
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("无法打开文件\n");
return 0;
}
// 写入文件
fputs("Hello, World!", file);
// 读取文件
char buffer[256];
fgets(buffer, 256, file);
printf("%s", buffer);
// 关闭文件
fclose(file);
return 0;
}
☆ C++文件操作步骤
引入必要的头文件,在程序开始前引入头文件<iostream> 、<fstream>。
与C相比,C++提供了更多方便的方式来打开和操作文件。
1.打开文件:在打开文件方面的 C++提供了比C更丰富的方式。除兼容C方式外,<iostream>的open()函数来打开文件,这个函数需要两个参数:文件名和打开模式。这个函数需要两个参数:文件名和打开模式。还可以使用文件流类来打开文件,如std::ifstream file();
2.读写文件内容:
使用get()函数从文件中读取一个字符。使用put()函数向文件中写入一个字符。
使用getline()函数从文件中读取一行字符串。使用<<运算符或write()函数向文件中写入字符串。
等
3.关闭文件:使用close()函数关闭文件。
另外,需要注意文件操作过程可能会遇到一些异常情况,如文件打开失败、文件读写失败等等,需要进行相应的处理来保证程序的正确性和健壮性。
例如:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
const char* filename = "example.txt"; // 文件名
const char* mode = "w+"; // 打开文件的模式,这里是以读写方式打开
// 创建并打开文件,检查是否成功打开
ofstream out_file;
out_file.open(filename, ios::out);
if (!out_file.is_open()) {
cerr << "文件打开失败" << endl;
return -1;
}
// 写入文件
const char* content = "Hello, World!";
out_file << content;
// 关闭文件
out_file.close();
// 打开文件,检查是否成功打开
ifstream in_file;
in_file.open(filename, ios::in);
if (!in_file.is_open()) {
cerr << "文件打开失败" << endl;
return -1;
}
// 读取文件
char buffer[1024];
in_file.getline(buffer, sizeof(buffer));
cout << buffer << endl;
// 关闭文件
in_file.close();
return 0;
}
上面代码,改用文件流类来打开文件:
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// 打开文件
ofstream file("example.txt", ios::in);
if (!file.is_open()) {
cerr << "无法打开文件" << endl;
return 1;
}
// 写入文件
file.write("Hello, World!", 50);
// 关闭文件
file.close();
// 重新打开文件
ifstream readfile("example.txt");
if (!readfile.is_open()) {
cerr << "无法打开文件" << endl;
return 1;
}
// 读取文件
char buffer[256];
readfile.read(buffer, 256);
cout << buffer << endl;
// 关闭文件
readfile.close();
return 0;
}
文件操作的资料
C File I/O https://www.geeksforgeeks.org/basics-file-handling-c/
C++ Files and Streams https://www.tutorialspoint.com/cplusplus/cpp_files_streams.htm