# 文件

**文件读写命名空间。** 所有返回 `结果` 容器,失败不炸程序。

## 函数

| 调用 | 返回 | 说明 |
|------|------|------|
| `文件.读(路径)` | `结果` | 成功时 `.值` 为文件内容字符串;失败时 `.错误` 为原因 |
| `文件.写(路径, 内容)` | `结果` | 成功时 `.值` 为 `真`;失败(路径非法、写入/刷盘失败等)时 `.错误` 为原因 |
| `文件.存在?(路径)` | `布尔` | 文件是否存在 |
| `文件.删(路径)` | `结果` | 删除文件;占用/瞬时锁会**自动重试**,最终失败时 `.错误` 带尝试次数与系统错误码;文件不存在视为明确错误 |

## 用法

```xuantie
设 写果 = 文件.写("配置.json", "{\"版本\": 1}")
若 写果.成功 { 示("已写入") } 否 { 示("写入失败: " & 写果.错误) }

设 读果 = 文件.读("配置.json")
若 读果.成功 {
    设 数据 = 解(读果.值)     // 读回的是字符串,要解析 JSON 得再过 解
    示(数据["版本"])
} 否 {
    示("读取失败: " & 读果.错误)
}
```

## 注意

*   `文件.读` 返回的是 `结果` 容器**不是字符串**——直接 `解(文件.读(...))` 会在运行时显式报错退出(守卫:`解` 只接受字符串)。必须先 `若 r.成功 { 解(r.值) }`。
*   删除文件**不要**写 `执("cmd /c del …")`:命令里的正斜杠会被 cmd 当作开关(`Invalid switch`),且失败常被忽略。用 `文件.删`。
*   中文路径安全:`文件.*` 在 Windows 上走宽字符 API(`_wfopen` / `DeleteFileW`),UTF-8 路径可直接使用。

## 相关

*   [解](解.md)、[化](化.md) —— JSON 反序列化与序列化
*   [执](执.md) —— 执行外部命令