简体   繁体   中英

How to check whether a file exists in C:\ drive using VC++?

I want to check a file is present in C drive or not..? can any one tell me how ?

Update:

I got errors, I am using 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;
}

Update 2

When trying to cut and paste code from the linked example below:

#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;
} 

I am getting this error:

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

It's not the code's problem, this is a link error as it said. you should add this to your code which tell the linker to use "shlwapi.lib" library.

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

In my case, it solve the problem. In windows ,there is not _stat thing. But luckily, you don't need to open it to check its validity, the PathFileExists is the exact function you need.

考虑到您提到的C驱动器,我假设您可以使用Windows API,如果可以,那么PathFileExists(LPCTSTR)可以帮助您

Sure - just try opening it and see if it fails:

#include <stdio.h>

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

You don't have to open it - just get its status using stat or _stat

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


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

There are also Windows API functions to give you more control

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM