# 文件
**文件读写命名空间。** 所有返回 `结果` 容器,失败不炸程序。
## 函数
| 调用 | 返回 | 说明 |
|------|------|------|
| `文件.读(路径)` | `结果` | 成功时 `.值` 为文件内容字符串;失败时 `.错误` 为原因 |
| `文件.写(路径, 内容)` | `结果` | 成功时 `.值` 为 `真`;失败(路径非法、写入/刷盘失败等)时 `.错误` 为原因 |
| `文件.存在?(路径)` | `布尔` | 文件是否存在 |
| `文件.删(路径)` | `结果` | 删除文件;占用/瞬时锁会**自动重试**,最终失败时 `.错误` 带尝试次数与系统错误码;文件不存在视为明确错误 |
## 用法
```xuantie
设 写果 = 文件.写("配置.json", "{\"版本\": 1}")
若 写果.成功 { 示("已写入") } 否 { 示("写入失败: " & 写果.错误) }
设 读果 = 文件.读("配置.json")
若 读果.成功 {
设 数据 = 解(读果.值) // 读回的是字符串,要解析 JSON 得再过 解
示(数据["版本"])
} 否 {
示("读取失败: " & 读果.错误)
}
```
## 注意
* `文件.读` 返回的是 `结果` 容器**不是字符串**——直接 `解(文件.读(...))` 会在运行时显式报错退出(守卫:`解` 只接受字符串)。必须先 `若 r.成功 { 解(r.值) }`。
* 删除文件**不要**写 `执("cmd /c del …")`:命令里的正斜杠会被 cmd 当作开关(`Invalid switch`),且失败常被忽略。用 `文件.删`。
* 中文路径安全:`文件.*` 在 Windows 上走宽字符 API(`_wfopen` / `DeleteFileW`),UTF-8 路径可直接使用。
## 相关
* [解](解.md)、[化](化.md) —— JSON 反序列化与序列化
* [执](执.md) —— 执行外部命令