摘要:该_stat()
函数表示驱动器号映射到UNC路径时不存在文件。
详细信息:在 Windows 系统上,有类似 UNC 路径
\\computer\sharename\disk_M\the_subdir\file.txt
它是这样映射的:
net use M: \\computer\sharename\disk_M
然后file.txt
可以访问为M:\the_subdir\file.txt
,我真的可以在编辑器中看到它的内容。
问题是我需要在我的程序中测试文件是否存在。我确实使用以下功能:
bool isfile(const std::string & path)
{
struct _stat stat;
if (_stat(path.c_str(), &stat))
return false; // the call returns -1 with errno ENOENT
return (stat.st_mode & _S_IFREG) != 0;
}
调试时,我发现_stat
调用该FindFirstFile
函数:
/* Call Find Match File */
findhandle = FindFirstFile((_TSCHAR *)name, &findbuf);
if ( findhandle == INVALID_HANDLE_VALUE ) {
_TSCHAR * pBuf = NULL;
...它无法在此处准确找到该文件。
问题是什么?我究竟做错了什么?如何增强对文件存在的检测?(代码在本地管理员做驱动映射的环境下运行,无法更改配置。)