如何使用VC ++检查C:\驱动器中是否存在文件?

时间:2010-05-25 09:19:33

标签: c++ windows winapi visual-c++

我想查看C盘中是否存在文件..?谁能告诉我怎么样?

更新

我遇到了错误,我使用的是VC ++ 2008

#include "stdafx.h" 
#include <stdio.h> 
int main(int argc, _TCHAR argv[]) 
{ 
    FILE * f = fopen("C:\\Program Files (x86)\\flower.jpeg"); 
    if (f == NULL) { 
        file_exists = FALSE:
    } else { 
        file_exists = TRUE; 
        fclose(f);
    } 
    return 0;
}

更新2

尝试剪切和粘贴下面linked example中的代码时:

#include "stdafx.h" 
#include <windows.h> 
#include "Shlwapi.h" 
int tmain(int argc, _TCHAR argv[]) 
{ 
    // Valid file path name (file is there). 
    TCHAR buffer_1[ ] = _T("C:\\TEST\\file.txt"); 
    TCHAR *lpStr1; 
    lpStr1 = buffer_1; 

    // Return value from "PathFileExists". 
    int retval;

    // Search for the presence of a file with a true result.
    retval = PathFileExists(lpStr1); 
    return 0;
} 

我收到此错误:

files.obj : error LNK2019: unresolved external symbol __imp__PathFileExistsW@4 referenced in function _wmain 

4 个答案:

答案 0 :(得分:3)

这不是代码的问题,这是一个链接错误,正如它所说。 你应该将它添加到你的代码中,告诉链接器使用“shlwapi.lib”库。

#pragma comment( lib, "shlwapi.lib")

就我而言,它解决了问题。 在Windows中,没有_stat的东西。但幸运的是,您无需打开它来检查其有效性,PathFileExists是您需要的确切功能。

答案 1 :(得分:2)

鉴于你提到C盘,我假设你可以使用Windows API,如果是这样PathFileExists(LPCTSTR)你会这样做

答案 2 :(得分:0)

当然 - 只需尝试打开它,看看它是否失败:

#include <stdio.h>

int file_exists = 0;
FILE * f = fopen("C:\\foo.dat", "rb");
if (f != NULL)
{
    file_exists = 1;
    fclose(f);
}

答案 3 :(得分:0)

您无需打开它 - 只需使用stat_stat

获取其状态
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


struct _stat buffer;
int         status;
...
status = _stat("mod1", &buffer);

还有Windows API函数可以为您提供更多控制