确认GetInvalidFileNameChars与GetInvalidPathChars的区别
Windows平台下GetInvalidFileNameChars与GetInvalidPathChars的区别确认
你的理解完全正确,具体细节可以进一步明确:
GetInvalidFileNameChars
- 用于验证要创建或重命名的单个文件、文件夹名称(包括路径中单独某一级的文件夹/文件名),它会排除
*?:这类绝对不能出现在实体文件/文件夹名称中的字符,确保名称符合Windows文件系统对实体资源命名的规则。
- 用于验证要创建或重命名的单个文件、文件夹名称(包括路径中单独某一级的文件夹/文件名),它会排除
GetInvalidPathChars
- 设计初衷是适配带通配符的搜索/列举路径(比如
c:\toto\**\*.txt这种用于批量查找文件的路径),因此不会排除*?这类通配符,但它依然包含一些绝对不允许出现在路径中的字符(比如")。所以它确实不能用来验证文件夹/文件的实体名称——像My"Folder这种带双引号的名称,本身就不符合Windows命名规则,属于非法名称。
- 设计初衷是适配带通配符的搜索/列举路径(比如
另外需要明确的是,这两个方法确实不足以完成文件名/路径的完整验证:Windows文件系统还有其他命名限制,比如文件名长度上限、不能使用CON/PRN这类系统保留名称、不能以.或空格结尾等规则,这些都是这两个方法不会校验的。
内容的提问来源于stack exchange,提问作者CitizenInsane
相关产品推荐
相关产品推荐

