温馨提示×

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

小樊
51
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