温馨提示×

C++中Linux文件操作全攻略

小樊
48
2025-09-21 14:26:38
栏目: 编程语言

在C++中进行Linux文件操作,通常会使用标准库中的<fstream>头文件提供的类,以及POSIX API中的一些函数。以下是一些基本的文件操作方法:

使用 <fstream> 进行文件操作

<fstream> 提供了三个主要的类:ifstream(输入文件流),ofstream(输出文件流),和 fstream(输入输出文件流)。

打开文件

#include <fstream> #include <iostream> int main() { std::ifstream infile("example.txt"); // 打开一个文件用于读取 if (!infile) { std::cerr << "Unable to open file for reading\n"; return 1; } std::ofstream outfile("example_copy.txt"); // 打开一个文件用于写入 if (!outfile) { std::cerr << "Unable to open file for writing\n"; return 1; } // ... 进行文件读写操作 ... infile.close(); // 关闭文件 outfile.close(); return 0; } 

读取文件

std::string line; while (std::getline(infile, line)) { // 逐行读取 std::cout << line << std::endl; } 

写入文件

outfile << "Hello, World!\n"; // 写入一行文本 

使用 POSIX API 进行文件操作

POSIX API 提供了一系列的函数来处理文件和目录,这些函数定义在 <fcntl.h>, <unistd.h>, <sys/stat.h>, <sys/types.h>, <dirent.h> 等头文件中。

打开文件

#include <fcntl.h> #include <unistd.h> int fd = open("example.txt", O_RDONLY); // 以只读方式打开文件 if (fd == -1) { perror("open"); return 1; } 

读取文件

char buffer[1024]; ssize_t bytesRead = read(fd, buffer, sizeof(buffer) - 1); // 读取文件到缓冲区 if (bytesRead == -1) { perror("read"); close(fd); return 1; } buffer[bytesRead] = '\0'; // 确保字符串以null结尾 printf("%s\n", buffer); 

写入文件

const char* data = "Hello, World!\n"; ssize_t bytesWritten = write(fd, data, strlen(data)); // 写入数据到文件 if (bytesWritten == -1) { perror("write"); close(fd); return 1; } 

关闭文件

close(fd); 

创建目录

#include <sys/stat.h> #include <sys/types.h> int status = mkdir("new_directory", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); // 创建目录 if (status == -1) { perror("mkdir"); return 1; } 

打开目录

DIR* dir = opendir("directory_name"); // 打开目录 if (!dir) { perror("opendir"); return 1; } 

读取目录

struct dirent* entry; while ((entry = readdir(dir)) != nullptr) { printf("%s\n", entry->d_name); } 

关闭目录

closedir(dir); 

这些是C++中进行Linux文件操作的一些基本方法。在实际应用中,可能需要根据具体需求进行更复杂的文件操作,比如文件的随机访问、文件锁的使用、内存映射文件等。记得在操作文件时处理好错误情况,并在适当的时候关闭文件描述符或文件流。

0