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

## 问题分析

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

## 解决方案

### 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等

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

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

