Files
dns-server/.trae/documents/实现系统启动时自动创建文件和文件夹.md
2025-11-28 17:08:34 +08:00

118 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现系统启动时自动创建文件和文件夹
## 问题分析
当前系统启动时,如果配置文件中指定的文件或文件夹不存在,会导致报错,影响系统正常启动。需要实现自动创建功能,确保系统能够顺利启动。
## 解决方案
### 1. 自动创建配置文件
* 在main.go中添加检查配置文件是否存在的逻辑
* 如果配置文件不存在创建默认的config.json文件
### 2. 自动创建数据文件夹
* 根据配置文件中的路径,创建所需的文件夹:
* 数据文件夹(默认:./data
* 远程规则缓存文件夹(默认:./data/remote_rules
* 日志文件夹根据配置文件中的Log.File路径
### 3. 自动创建文件
* 根据配置文件中的路径,创建所需的文件:
* 本地规则文件默认data/rules.txt
* Hosts文件默认data/hosts.txt
* 统计数据文件(默认:./data/stats.json
* Shield统计数据文件默认./data/shield_stats.json
## 实现步骤
### 1. 修改main.go文件
* 在命令行参数解析后,添加检查配置文件是否存在的逻辑
* 如果配置文件不存在创建默认的config.json文件
* 调用LoadConfig加载配置
### 2. 添加createDefaultConfig函数
* 实现创建默认配置文件的功能
* 写入默认的配置内容到config.json
### 3. 添加createRequiredFiles函数
* 实现创建所需文件和文件夹的功能
* 根据配置文件中的路径,创建所需的文件夹
* 根据配置文件中的路径,创建所需的文件
### 4. 在main.go中调用createRequiredFiles函数
* 在配置加载完成后调用createRequiredFiles函数
* 确保在初始化屏蔽管理系统之前创建所需的文件和文件夹
## 预期效果
* 系统启动时如果配置文件不存在自动创建默认的config.json文件
* 自动创建所需的文件夹data、data/remote_rules、logs等
* 自动创建所需的文件rules.txt、hosts.txt、stats.json等
* 系统能够顺利启动,不会因为找不到文件而报错
## 技术要点
* 使用os.Stat函数检查文件或文件夹是否存在
* 使用os.MkdirAll函数创建文件夹包括父文件夹
* 使用os.Create函数创建文件
* 确保在初始化屏蔽管理系统之前创建所需的文件和文件夹
* 确保在初始化日志系统之前创建日志文件夹
## 实现时间
* 预计1-2小时完成所有修改和测试
## 风险评估
* 低风险:修改范围明确,不涉及核心功能
* 可回滚:所有修改均为添加新功能,可通过恢复文件轻松回滚
## 依赖关系
* 依赖os包的文件操作功能
* 依赖config包的配置结构
## 测试策略
* 手动测试删除配置文件、文件夹和文件,然后启动服务器,验证是否自动创建
* 验证创建的文件和文件夹是否符合配置文件中的路径
* 验证服务器能够顺利启动,没有报错
## 验收标准
* 系统启动时如果配置文件不存在自动创建默认的config.json文件
* 自动创建所需的文件夹data、data/remote_rules、logs等
* 自动创建所需的文件rules.txt、hosts.txt、stats.json等
* 系统能够顺利启动,不会因为找不到文件而报错
* 所有创建的文件和文件夹都符合配置文件中的路径