use std::fs::{self, File};
use std::io::{self, Write};
use std::path::Path;
// 记录错误信息到文件,这里简单实现为写入一个log文件
fn log_error(error: &str) {
let mut file = File::create("error.log").unwrap_or_else(|e| {
panic!("无法创建错误日志文件: {}", e);
});
file.write_all(error.as_bytes()).unwrap_or_else(|e| {
panic!("无法写入错误日志: {}", e);
});
}
fn main() {
let config_path = Path::new("config.txt");
let data_path = Path::new("data.txt");
// 读取配置文件
let config_content = fs::read_to_string(config_path).map_err(|e| {
let error_msg = format!("读取配置文件失败: {}", e);
log_error(&error_msg);
e
})?;
// 根据配置文件内容决定是否创建或修改数据文件
if config_content.contains("create_or_modify") {
let mut data_file = File::options()
.write(true)
.create(true)
.open(data_path)
.map_err(|e| {
let error_msg = format!("打开或创建数据文件失败: {}", e);
log_error(&error_msg);
e
})?;
let new_data = "新的数据内容";
data_file.write_all(new_data.as_bytes()).map_err(|e| {
let error_msg = format!("写入数据文件失败: {}", e);
log_error(&error_msg);
e
})?;
}
println!("操作完成");
}
代码说明:
- log_error函数:用于将错误信息记录到
error.log
文件中。如果创建或写入文件失败,会panic
,实际应用中可更优雅处理。
- 读取配置文件:使用
fs::read_to_string
读取配置文件内容,若失败,记录错误日志并返回错误。
- 创建或修改数据文件:根据配置文件内容判断是否需要操作数据文件。若需要,使用
File::options
打开或创建数据文件,写入数据,若操作失败,记录错误日志并返回错误。