可以假设Windows本地和网络文件路径不区分大小写吗?
可以假设Windows本地和网络文件路径不区分大小写吗?
是的。Windows(本地)文件系统,包括NTFS、FAT和变体,在正常情况下都是不区分大小写的。然而,网络文件系统的底层实现可能是区分大小写的,不过大多数允许Windows访问它的软件(例如SMB)都会自动将区分大小写的文件系统呈现为对Windows不区分大小写。
有关详细信息,请阅读Wikipedia文件名文章中的章节。
fsutil.exe file SetCaseSensitiveInfo <目录路径> enable|disable
。需要注意的是,此选项只适用于格式为 ext4 的 Linux 文件系统。总体而言,这一变化使得 WSL 更加逼真,并且允许用户更好地模拟在真正的 Unix 环境中的工作方式。 - Bernhard在Windows上,大小写敏感性实际上是由应用程序打开文件的方式实现的。NTFS可以是大小写敏感的文件系统,并且可以快乐地存储具有相同名称但仅以大小写区分的文件。
在Windows上,所有文件最终都是通过CreateFile API打开的 - 如果传递了FILE_FLAG_POSIX_SEMANTICS
标志(并且正在访问的文件系统是本地大小写敏感的),则将基于精确名称匹配打开该文件。如果未传递FILE_FLAG_POSIX_SEMANTICS
,则文件系统会执行不区分大小写的文件打开操作,并将打开具有匹配名称的其中一个文件。如果有多个,则无法确定实际上要打开哪个。
在Windows上,大多数C和C++运行时实现都不提供对此机制的任何访问,并且从不使用此标志,因此要想获得访问大小写敏感行为的唯一方法是直接使用Windows API。
tl;dr-您的语言运行时可能将文件系统公开为不区分大小写或保留大小写。如果直接使用Windows API,则可以访问完全支持大小写敏感的文件系统。
NFST - 可以区分大小写。 我在每个目录上使用它,但你也可以用整个NTFS驱动器。 https://devblogs.microsoft.com/commandline/per-directory-case-sensitivity-and-wsl/
WSL - 区分大小写。 Linux GUI应用程序和Android应用程序即将进入Windows。默认情况下,它们都在本地运行于一个区分大小写的文件系统上。