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

3.3 KiB
Raw Blame History

实现系统启动时自动创建文件和文件夹

问题分析

当前系统启动时,如果配置文件中指定的文件或文件夹不存在,会导致报错,影响系统正常启动。需要实现自动创建功能,确保系统能够顺利启动。

解决方案

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等

  • 系统能够顺利启动,不会因为找不到文件而报错

  • 所有创建的文件和文件夹都符合配置文件中的路径