c - 为什么标准托管 C 中的 "file"概念如此通用?

标签 c file standards

<分区>

我所知道的每个托管实现都有某种方式来表示以下概念。有没有正在使用的实现?如果不是,为什么 C 不需要它们的标准 API 以便可以使用更可移植的代码?

  • 创建目录
  • 使用目录分隔符的一些概念在目录中创建文件或目录
  • 绝对路径
  • 相对路径
  • 当前工作目录
  • 主目录
  • 删除空目录
  • 某种形式的文件元数据/属性
  • 文件移动(可以通过复制+删除来实现,但通常操作系统有更高效/原子的方式,例如 inode)
  • 最大文件名长度
  • 仅由 ASCII 字母字符组成的文件名(可能不区分大小写)

最佳答案

  • 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/

相关文章:

c - 性能比较 : 64 bit and 32 bit multiplication

C++在类函数中和类外写入文件

java - 从 .txt 文件中读取方程式并将其设置为方法的返回

c++ - Visual Studio 11(测试版)中的强类型枚举类

使用指向结构体中指针的指针创建二维数组

c - 提高屏幕捕获性能

c - 为什么矩阵不能用 5,3 而用 3,5?

python - 如何使用 Python pathlib 处理文件名中的多个点?

c - C中字符串文字的最大可能长度

c++ - 现有的标准样式和编码标准文档