在C ++中,如何验证文件或文件夹路径?

时间:2010-01-05 20:03:23

标签: c++ windows

目标路径的用户输入字符串可能包含空格或其他无效字符。

示例:“C:\ users \ username \\ directoryname \”

请注意,路径两侧都有空格,中间只有一个空格的文件夹名称无效。检查它是否是绝对路径是不够的,因为它只能真正处理前导空格。删除尾随空格也是不够的,因为您仍然在中间留下了无效的space-for-folder-name。

在尝试使用它之前,我如何证明路径有效?

4 个答案:

答案 0 :(得分:6)

“证明”路径有效的唯一方法是打开它。

SHLWAPI提供了一组路径函数,可用于规范化路径或验证路径是否有效。这对于拒绝明显不好的路径很有用,但是如果不经过文件系统,你仍然不能相信路径是有效的。

使用NTFS,我相信您提供的路径实际上是有效的(尽管Explorer可能不允许您创建只有空格的目录。)

答案 1 :(得分:2)

Boost Filesystem库提供帮助程序来操作文件,路径等等......看看simple ls example存在函数。

答案 2 :(得分:1)

我使用GetFileAttributes来检查是否存在。适用于两个文件夹(在返回值中查找FILE_ATTRIBUTE_DIRECTORY标志)和文件。我已经这么做了多年,从来没有遇到过问题。

答案 3 :(得分:0)

如果您不想打开文件,您还可以在类似POSIX的平台上使用access()功能,或者在Windows上使用_access()和朋友。但是,我喜欢Boost.Filesystem方法Ricardo指出。