为什么标准托管C中的“文件”概念如此通用?

时间:2011-12-31 11:57:24

标签: c file standards

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

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

2 个答案:

答案 0 :(得分:3)

因为在开发C时,目录或文件系统的概念并不像现在那样广泛。您如何在没有文件系统但仍与C兼容的系统上实现您描述的所有内容?你不能。

C文件是一个流,也可以是磁带录音机中的磁带。很常见。目录是柜子的架子。去你的C代码中删除这些......

答案 1 :(得分:3)

  
      
  • 创建目录
  •   

我的理解(我从未使用过它们)是IBM mini(ex OS 400,我不记得他们现在的名字)和大型机(我认为他们现在的名字是zSeries)有不同的方式组织他们的它不能很好地映射到你(或我的)目录概念的文件。

  
      
  • 在目录中创建文件或目录,其中包含目录分隔符的一些概念
  •   

VMS文件名的结构类似于D:[A.B.C]name.ext;ver

  
      
  • 文件移动(可以实现为复制+移除,但通常操作系统有更高效/原子的方式,例如inode)
  •   
自C90以来,

重命名出现在C中。

  
      
  • 最大文件名长度
  •   

Unix在一段时间内没有它(好吧,它是按文件系统而有些它有如此之高以至于认为有一个没有意义。)

  
      
  • 仅包含ASCII字母字符的文件名(可能不区分大小写)
  •   

我非常怀疑IBM大型机在为所有内容使用EBCDIC时使用ASCII作为文件名。