阅读量:2
在C++中进行Linux文件操作,通常会使用标准库中的头文件提供的类,以及POSIX API中的一些函数。以下是一些基本的文件操作方法:
使用 进行文件操作
提供了三个主要的类:ifstream(输入文件流),ofstream(输出文件流),和 fstream(输入输出文件流)。
打开文件
#include
#include
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 提供了一系列的函数来处理文件和目录,这些函数定义在 , , , , 等头文件中。
打开文件
#include
#include
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
#include
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文件操作的一些基本方法。在实际应用中,可能需要根据具体需求进行更复杂的文件操作,比如文件的随机访问、文件锁的使用、内存映射文件等。记得在操作文件时处理好错误情况,并在适当的时候关闭文件描述符或文件流。
以上就是关于“C++中Linux文件操作全攻略”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm