按已授目录权访问文件的接口规范。
源码浏览已生成;不能解析的文件以纯文本展示,不表示通过类型检查。
# 文件接口规范 0.1.0 本包只声明接口,文件句柄与目录权的构造属于宿主实现。应用依赖本包是必需条件;宿主仍须在本次运行中单独授予具名目录。 - `取得已授目录` 根据本次运行的授权表取目录权。名称未授权时返回 `未获授权`;接口包在宿主上不存在时于构建或装载阶段失败。 - 路径使用 `/` 分隔的相对字符串;为空、以 `/` 起始、含空段、`.`、`..` 或零字节者为 `输入无效`。合法路径的组成段按 Unicode 码点原样比较,不隐式改大小写或正规化。宿主须把解析限制在目录权内,不因符号链接、重新命名或文件系统大小写规则逃出授权边界;不能保持此约定的宿主不得宣称实现本包。 - `打开只读文件` 取得只能读的文件柄。`打开可写文件` 打开已存在的可写文件,不隐式创建或截断。其他打开模式以后另加接口函数。 - `读取文件` 的上限须非负。正上限时,返回长度 1 至上限的字节串,或独立的 `文件读尽`;上限为零返回空字节串。读取可能挂起,应用不得假定立即返回。 - `写入文件` 返回本次实际接受的字节数;输入为空时返回零,输入非空且成功时须返回一至输入长度之间的值。暂时不能接受任何字节时返回 `资源暂不可用`,不能以“成功写入零字节”使调用者无限重试。部分写入由调用者继续提交。写入可能挂起,返回不保证数据已落盘。 - `关闭文件` 无论成功或失败都使句柄失效;失败可表示写入或关闭时的宿主错误,调用者不能再用旧句柄重试。其后读写返回 `资源已失效`。首版要求调用者串行使用同一句柄;并发读写及重复关闭均须返回 `输入无效` 或 `资源已失效`,不得产生未定义行为。 规范样例须覆盖:未授权目录、路径越界、读到末尾、嵌零字节、部分写入、关闭后使用,以及读取和写入的权限分离。
# 文件接口规范 目录权惟宿主预授,应用以名求之。路径相对此目录,不得空、绝对、含空段、点段、上溯及零字;符号链接与异名之法,皆不得使其越界。只读、可写之柄各守其权;可写之开不暗造、不截断。 读以上限求字,零上限可得空串;正上限若已尽则明返「文件读尽」,不可混于空串。写入若空,可返零;非空而成,实纳至少一字,否则返暂不可用之误,不得成而返零。未必尽纳,亦不保证已落盘。读写可挂起。关闭无论成败,柄皆失效;同柄之用首版须串行,并用或重闭须返有型之误,不得行为未定。详验诸例见[汉语稿](规范.汉语.md)。