开发者

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.


Given you mention C drive, I'm assuming you can use the Windows API, if so PathFileExists(LPCTSTR) will do you


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜