Windows 文件名 - 如何检查文件名是否有效



我想要一个函数,可能在路径函数中,可以检查文件名是否有效。通过有效,我的意思是字符串中存在的字符是否都是有效的(例如,没有?>等)。但可悲的是,没有功能。浏览了网络,所以,我发现很少的技术,没有一个我喜欢,或者发现坚实。

  • 使用正则表达式检查文件名的内容。
  • 创建文件名,可能在系统的路径%TEMP%。如果创建失败,则文件名(可能)无效。否则,它是有效的(因此,删除该文件)。
  • 编写一个函数,检查文件名中是否存在无效字符(例如 ?:*>

函数的扩展形式是检查所有无效的名称(如AUXCON等),但这不是问题(至少目前是这样)。

是否有任何我可能错过的记录/未记录的功能,它可以可靠地检查文件名(不是路径名)是否有效。

编辑:PathCleanupSpec函数现已弃用,不再受支持。有关详细信息,请参阅链接页面末尾的Requirements部分。

<小时 />

谢谢康纳的功能。对于其他读取器,函数名称为 PathCleanupSpec 。我使用它实现了以下内容:

bool IsLegalFileName(LPCWSTR filename)
{
    WCHAR valid_invalid[MAX_PATH];
    wcscpy_s(valid_invalid, filename);
    int result = PathCleanupSpec(nullptr, valid_invalid);
    // If return value is non-zero, or if 'valid_invalid' 
    // is modified, file-name is assumed invalid
    return result == 0 && wcsicmp(valid_invalid, filename)==0;
}

相关内容

最新更新