在Linux中,C++可以通過多種方式來管理文件系統。以下是一些常用的方法:
std::ifstream
、std::ofstream
和std::fstream
類來實現的。#include <fstream>
#include <iostream>
int main() {
// 打開文件用于寫入
std::ofstream outFile("example.txt");
if (outFile.is_open()) {
outFile << "Hello, World!" << std::endl;
outFile.close();
} else {
std::cerr << "Unable to open file for writing." << std::endl;
}
// 打開文件用于讀取
std::ifstream inFile("example.txt");
if (inFile.is_open()) {
std::string line;
while (std::getline(inFile, line)) {
std::cout << line << std::endl;
}
inFile.close();
} else {
std::cerr << "Unable to open file for reading." << std::endl;
}
return 0;
}
open()
、read()
、write()
、close()
等。#include <fcntl.h>
#include <unistd.h>
#include <iostream>
int main() {
// 打開文件用于寫入
int fd = open("example.txt", O_WRONLY | O_CREAT, 0666);
if (fd == -1) {
std::cerr << "Error opening file for writing." << std::endl;
return 1;
}
write(fd, "Hello, World!\n", 14);
close(fd);
// 打開文件用于讀取
fd = open("example.txt", O_RDONLY);
if (fd == -1) {
std::cerr << "Error opening file for reading." << std::endl;
return 1;
}
char buffer[256];
ssize_t bytesRead = read(fd, buffer, sizeof(buffer) - 1);
if (bytesRead > 0) {
buffer[bytesRead] = '\0'; // Null-terminate the string
std::cout << buffer;
}
close(fd);
return 0;
}
#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main() {
fs::path filePath("example.txt");
// 創建文件
if (!fs::exists(filePath)) {
std::ofstream outFile(filePath);
if (outFile.is_open()) {
outFile << "Hello, World!" << std::endl;
outFile.close();
} else {
std::cerr << "Unable to open file for writing." << std::endl;
}
}
// 讀取文件內容
if (fs::exists(filePath)) {
std::ifstream inFile(filePath);
std::string line;
while (std::getline(inFile, line)) {
std::cout << line << std::endl;
}
inFile.close();
}
// 刪除文件
if (fs::exists(filePath)) {
fs::remove(filePath);
}
return 0;
}
在使用這些方法時,需要注意錯誤處理和資源管理。例如,確保文件在使用后被正確關閉,以及在打開文件時檢查是否成功。此外,當使用POSIX API或C++17文件系統庫時,可能需要鏈接相應的庫(如-lrt
或-lstdc++fs
)來編譯程序。