0

摘要:_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;

...它无法在此处准确找到该文件。

问题是什么?我究竟做错了什么?如何增强对文件存在的检测?(代码在本地管理员做驱动映射的环境下运行,无法更改配置。)

4

0 回答 0