ワンクリックで
cangjie-fs
仓颉语言文件系统操作。当需要了解仓颉语言的文件读写(File)、目录操作(Directory)、路径处理(Path)、文件信息(FileInfo)、文件系统函数(exists/copy/rename/remove)等特性时,应使用此 Skill。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
仓颉语言文件系统操作。当需要了解仓颉语言的文件读写(File)、目录操作(Directory)、路径处理(Path)、文件信息(FileInfo)、文件系统函数(exists/copy/rename/remove)等特性时,应使用此 Skill。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
当需要构建鸿蒙应用项目时,使用此 Skill 执行构建流程。此 Skill 包含完整的构建命令、构建流程说明、构建失败处理流程。构建脚本会自动执行依赖安装、仓颉预编译、资源生成、编译、打包等步骤。
在鸿蒙应用(Cangjie)开发中,当需要使用 stdx 拓展库(如 crypto、encoding、net、log、actors 等),或在构建/链接阶段出现 stdx 相关错误时,使用此 Skill 获取/解压 stdx 包,并指导在 entry/cjpm.toml 中正确配置 bin-dependencies.path-option。
在进行仓颉工程或鸿蒙应用开发时的第一步,应该优先读取该SKILL,用来确定后续的开发步骤。
仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。
仓颉语言附录参考。当需要查阅仓颉语言的关键字列表、运算符优先级与结合性、运算符重载函数签名、运行时环境变量配置、包兼容性规则、TokenKind枚举类型时,应使用此 Skill。
仓颉标准库 Array 类型详细指南。当需要了解 Array 的构造、元素访问、切片、拼接、查找、排序、拷贝、反转、映射、扁平化等操作的完整 API 和用法时,应使用此 Skill。
| name | cangjie-fs |
| description | 仓颉语言文件系统操作。当需要了解仓颉语言的文件读写(File)、目录操作(Directory)、路径处理(Path)、文件信息(FileInfo)、文件系统函数(exists/copy/rename/remove)等特性时,应使用此 Skill。 |
std.fs.*Resource & IOStream & SeekableFile(path, OpenMode) 或 File(Path, OpenMode)| 打开模式 | 行为 |
|---|---|
Read | 只读,文件不存在抛异常 |
Write | 只写,存在则截断,不存在则创建 |
Append | 追加写,不存在则创建 |
ReadWrite | 读写,不存在则创建,不截断 |
| 方法 | 说明 |
|---|---|
File.create(path) | 创建文件,返回只写 File |
File.createTemp(dirPath) | 创建临时文件 |
File.readFrom(path): Array<Byte> | 一次性读取整个文件 |
File.writeTo(path, data) | 一次性写入整个文件 |
File.appendTo(path, data) | 追加写入 |
try-with-resource 自动关闭import std.fs.*
import std.io.*
main() {
let path = Path("./demo.txt")
// 写入文件
try (f = File(path, Write)) {
f.write("Hello 仓颉\n".toArray())
}
// 追加
File.appendTo(path, "第二行\n".toArray())
// 读取整个文件
let data = File.readFrom(path)
println(String.fromUtf8(data))
// 随机读取
try (f = File(path, Read)) {
f.seek(SeekPosition.Begin(6))
let buf = Array<Byte>(6, repeat: 0)
f.read(buf)
println(String.fromUtf8(buf))
}
remove(path)
}
| 函数 | 说明 |
|---|---|
exists(path): Bool | 检查文件/目录是否存在 |
copy(src, to: dst, overwrite) | 复制文件或目录 |
rename(src, to: dst, overwrite) | 重命名/移动 |
remove(path, recursive) | 删除文件或目录 |
removeIfExists(path, recursive) | 安全删除(不存在不报错) |
| 方法 | 说明 |
|---|---|
Directory.create(path, recursive) | 创建目录,recursive: true 递归创建 |
Directory.createTemp(dirPath) | 创建临时目录 |
Directory.isEmpty(path): Bool | 检查目录是否为空 |
Directory.readFrom(path): Array<FileInfo> | 列出目录内容 |
Directory.walk(path, callback) | 遍历目录(回调返回 false 停止) |
import std.fs.*
main() {
let dir = Path("./mydir/sub")
Directory.create(dir, recursive: true)
File.create(dir.join("test.txt")).close()
let entries = Directory.readFrom(Path("./mydir"))
for (e in entries) {
println("${e.name} - ${e.size} bytes")
}
remove(Path("./mydir"), recursive: true)
}
Path 是路径结构体,支持路径拼接和解析parent、fileName、extensionName、fileNameWithoutExtension、isAbsolute()path.join(subPath) — 拼接子路径canonicalize(path) — 解析为绝对规范路径(处理 .、..、符号链接)import std.fs.*
main() {
let p = Path("/home/user/docs/readme.md")
println(p.parent) // "/home/user/docs"
println(p.fileName) // "readme.md"
println(p.extensionName) // "md"
println(p.fileNameWithoutExtension) // "readme"
println(p.isAbsolute()) // true
println(p.join("../notes")) // "/home/user/docs/../notes"
println(canonicalize(Path("."))) // 当前目录的绝对路径
}
File.info 或 Directory.readFrom() 获取name、path、size、creationTime、lastAccessTime、lastModificationTime、parentDirectory| 异常 | 说明 |
|---|---|
FSException | 文件系统错误(继承自 IOException) |
try-with-resource 自动关闭File.readFrom / File.writeTo / File.appendTo 是便捷的一次性读写方法FileInfo 每次属性访问都是实时文件系统查询,注意并发竞态Directory.create 需要 recursive: true 才能递归创建多级目录remove 删除目录时需要 recursive: true