關於文件與文件夾存在性的判斷

1. 使用_access函數,函數原型爲 int _access( const char *path, int mode );
2. 使用CreateFile函數,函數原型爲: HANDLE CreateFile( LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes DWORD dwCreationDisposition, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle to file with attributes to // copy );
3. 使用FindFirstFile函數,函數原型爲: HANDLE FindFirstFile( LPCTSTR lpFileName, // pointer to name of file to search for LPWIN32_FIND_DATA lpFindFileData // pointer to returned information );
4. 使用GetFileAttributes函數,函數原型如下: DWORD GetFileAttributes( LPCTSTR lpFileName // pointer to the name of a file or directory );
5. 使用Shell Lightweight Utility APIs函數 PathFileExists()專門判斷文件和目錄時否存在的函數文件名可讀性比較強還可以判斷目錄是否存在 Header: Declared in Shlwapi.h Import Library: Shlwapi.lib 以上的各種方法供參考,函數具體用法需參見MSDN。


方法1:
#include <io.h>
#include <stdio.h>
#include <stdlib.h>

void main( void )
{
  
    if( (_access( "D:\\a.txt", 0 )) != -1 )
    {
        printf( "File ACCESS.C exists\n" );
      
        if( (_access( "ACCESS.C", 2 )) != -1 )
           printf( "File ACCESS.C has write permission\n" );
     }
}

方法2:
if (INVALID_HANDLE_VALUE != CreateFile("D:\\a.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL))
{
    AfxMessageBox("File ACCESS.C exists\n");
}

方法3:
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include <stdio.h>

int main(int argc, char *argv[])
{
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;

    printf ("Target file is %s.\n", argv[1]);
    hFind = FindFirstFile(argv[1], &FindFileData);
    if (hFind == INVALID_HANDLE_VALUE)
    {
        printf ("Invalid File Handle. GetLastError reports %d\n", GetLastError ());
        return (0);
    }
    else
    {
        printf ("The first file found is %s\n", FindFileData.cFileName);
        FindClose(hFind);
        return (1);
    }
}

方法4:
if (GetFileAttributes("c:\\1.txt") == -1)
    MessageBox(0."Invalid File ","hehe",0)
else
    MessageBox(0."The first file found ","haha",0)

方法5:
if (INVALID_HANDLE_VALUE != CreateFile("D:\\a.txt", 0, 0, NULL, OPEN_EXISTING, 0, NULL))
{
    AfxMessageBox("File exists\n");
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章