区分大小写是操作系统特定的标准还是基于文件系统?
我知道在 Windows 中不能有两个同名的文件,但是在 Linux 下,如果字符的大小写不同,则可以。
答案1
事实上,两者皆可。
在 Windows 中,主文件系统 (NTFS) 实际上支持区分大小写。但 shell (explorer) 不允许这样做。
您仍然可以根据 POSIX 规则(访问区分大小写)与文件系统交互,方法是传递适当的标志调用时CreateFile
。尽管我们不鼓励这样做,而且在基于 Windows 的系统上也不应该这样做。
不要假设区分大小写。例如,假设名称 OSCAR、Oscar 和 oscar 相同,即使某些文件系统(如 POSIX 兼容文件系统)可能认为它们不同。请注意,NTFS 支持区分大小写的 POSIX 语义,但这不是默认行为。
答案2
维基百科似乎有一些可靠的信息可以帮助回答您的问题:
在 Unix 文件系统中,文件名通常区分大小写。旧 Windows 文件系统(VFAT、FAT32)不区分大小写(同一目录中不能同时存在 readme.txt 和 Readme.txt),但会保留大小写,即记住字母的大小写。原始 FAT12 文件系统不区分大小写。当前的 Windows 文件系统(如 NTFS)区分大小写;也就是说,readme.txt 和 Readme.txt 可以存在于同一目录中。由于与未设计用于此类操作的旧软件存在兼容性问题,Windows 不允许用户创建仅大小写不同的第二个文件
来源:维基百科
Windows 区分大小写的原因也可以通过以下方式来回答支持文章在这里:
作为 POSIX 合规性要求的一部分,Windows NT 文件系统 (NTFS) 提供了区分大小写的文件和目录命名约定。尽管 NTFS 和 POSIX 子系统都能很好地处理大小写问题,但 16 位 Windows、MS-DOS、OS/2 和 Win32 应用程序却不能。
维基百科在此处介绍了该合规性:POSIX. 尽管 Windows 未被列为完全符合 POSIX 标准。