在Linux中,C++可以通过多种方式来操作文件系统。以下是一些常用的方法:
#include <iostream>
#include <fstream>
int main() {
// 打开文件
std::ifstream infile("example.txt");
std::ofstream outfile("output.txt");
// 检查文件是否成功打开
if (!infile.is_open() || !outfile.is_open()) {
std::cerr << "Error opening files!" << std::endl;
return 1;
}
// 写入数据到文件
outfile << "Hello, World!" << std::endl;
// 从文件读取数据
std::string line;
while (std::getline(infile, line)) {
std::cout << line << std::endl;
}
// 关闭文件
infile.close();
outfile.close();
return 0;
}
fopen(), fclose(), fread(), fwrite(), fseek()等。#include <cstdio>
#include <cstring>
int main() {
FILE *infile = fopen("example.txt", "r");
FILE *outfile = fopen("output.txt", "w");
if (!infile || !outfile) {
perror("Error opening files");
return 1;
}
char buffer[256];
while (fgets(buffer, sizeof(buffer), infile)) {
fputs(buffer, outfile);
}
fclose(infile);
fclose(outfile);
return 0;
}
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>
int main() {
int infile = open("example.txt", O_RDONLY);
if (infile == -1) {
perror("Error opening file");
return 1;
}
int outfile = open("output.txt", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
if (outfile == -1) {
perror("Error creating output file");
close(infile);
return 1;
}
char buffer[256];
ssize_t bytes_read;
while ((bytes_read = read(infile, buffer, sizeof(buffer))) > 0) {
write(outfile, buffer, bytes_read);
}
close(infile);
close(outfile);
return 0;
}
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
// 创建目录
fs::create_directory("new_directory");
// 复制文件
fs::copy_file("example.txt", "example_backup.txt");
// 删除文件
fs::remove("example_backup.txt");
// 遍历目录
for (const auto& entry : fs::directory_iterator(".")) {
std::cout << entry.path() << std::endl;
}
return 0;
}
在使用这些方法时,需要注意错误处理和资源管理,确保文件在使用后被正确关闭,避免资源泄露。此外,当使用POSIX API或者C++17的文件系统库时,需要确保编译器支持相应的特性,并且在编译时启用相应的标准或库。例如,使用C++17的文件系统库时,可能需要添加编译选项-std=c++17。