<分区>
我所知道的每个托管实现都有某种方式来表示以下概念。有没有正在使用的实现?如果不是,为什么 C 不需要它们的标准 API 以便可以使用更可移植的代码?
- 创建目录
- 使用目录分隔符的一些概念在目录中创建文件或目录
- 绝对路径
- 相对路径
- 当前工作目录
- 主目录
- 删除空目录
- 某种形式的文件元数据/属性
- 文件移动(可以通过复制+删除来实现,但通常操作系统有更高效/原子的方式,例如 inode)
- 最大文件名长度
- 仅由 ASCII 字母字符组成的文件名(可能不区分大小写)
<分区>
我所知道的每个托管实现都有某种方式来表示以下概念。有没有正在使用的实现?如果不是,为什么 C 不需要它们的标准 API 以便可以使用更可移植的代码?
最佳答案
- Creating a directory
我的理解(我从未使用过它们)是 IBM mini(ex OS 400,我不记得它们当前的名称)和大型机(我认为它们当前的名称是 zSeries)有足够不同的方式来组织它们它不能很好地映射到您(或我的)目录概念的文件。
- Creating a file or directory in a directory, with some notion of a directory separator character
VMS 文件名的结构类似于 D:[A.B.C]name.ext;ver
- File moving (can be implemented as copy + remove, but usually the OS has a more efficient/atomic way e.g. inodes)
自 C90 以来,C 语言中存在重命名。
- A maximum file name length
Unix 已经有一段时间没有它了(好吧,它是按文件系统计算的,有些有如此之高以至于认为有一个是没有意义的)。
- Filenames that consist solely of ASCII alphabetical characters (with possible case insensitivity)
我非常怀疑 IBM 大型机是否使用 ASCII 作为文件名,而他们对所有内容都使用 EBCDIC。
关于c - 为什么标准托管 C 中的 "file"概念如此通用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8687962/