C標準庫 io.h原始碼 檢查檔案是否存在
阿新 • • 發佈:2019-01-25
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
bool isFileExist(const char *filename){
if( _access(filename, 0) == 0 ) {
// exist
printf("Exist %s\n",filename);
}else{
printf("Not exist %s\n",filename);
}
return true;
}
int main(){
isFileExist("c:\\boot.ini");
isFileExist("c:\\bootmgr");
return 0;
{
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile(lpPath, &fd);
BOOL bFilter = (FALSE == dwFilter) ? TRUE : fd.dwFileAttributes & dwFilter;
BOOL RetValue = ((hFind != INVALID_HANDLE_VALUE) && bFilter) ? TRUE : FALSE;
FindClose(hFind);
return RetValue;
}
// 檢查一個路徑是否存在(絕對路徑、相對路徑,檔案或資料夾均可)
BOOL FilePathExists(LPCTSTR lpPath)
{
return FindFirstFileExists(lpPath, FALSE);
}
// 檢查一個資料夾是否存在(絕對路徑、相對路徑均可)
BOOL FolderExists(LPCTSTR lpPath)
{
return FindFirstFileExists(lpPath, FILE_ATTRIBUTE_DIRECTORY);
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
bool isFileExist(const char *filename){
if( _access(filename, 0) == 0 ) {
// exist
printf("Exist %s\n",filename);
}else{
printf("Not exist %s\n",filename);
}
return true;
}
int main(){
isFileExist("c:\\boot.ini");
isFileExist("c:\\bootmgr");
return 0;
}
測試結果:
>gcc test.cpp
>a
Not exist c:\boot.ini
Exist c:\bootmgr
=====================================================================================
這個標頭檔案 外圍的條件編譯是非 posix。windows平臺 還有 CreateFile啊,GetFileAttributeEx啊,FindFirstFile
BOOL FindFirstFileExists(LPCTSTR lpPath, DWORD dwFilter)
{
WIN32_FIND_DATA fd;
HANDLE hFind = FindFirstFile(lpPath, &fd);
BOOL bFilter = (FALSE == dwFilter) ? TRUE : fd.dwFileAttributes & dwFilter;
BOOL RetValue = ((hFind != INVALID_HANDLE_VALUE) && bFilter) ? TRUE : FALSE;
FindClose(hFind);
return RetValue;
}
// 檢查一個路徑是否存在(絕對路徑、相對路徑,檔案或資料夾均可)
BOOL FilePathExists(LPCTSTR lpPath)
{
return FindFirstFileExists(lpPath, FALSE);
}
// 檢查一個資料夾是否存在(絕對路徑、相對路徑均可)
BOOL FolderExists(LPCTSTR lpPath)
{
return FindFirstFileExists(lpPath, FILE_ATTRIBUTE_DIRECTORY);
}
HANDLE FindFirstFileEx(
LPCTSTR lpFileName, // file name
FINDEX_INFO_LEVELS fInfoLevelId, // information level
LPVOID lpFindFileData, // information buffer
FINDEX_SEARCH_OPS fSearchOp, // filtering type
LPVOID lpSearchFilter, // search criteria
DWORD dwAdditionalFlags // reserved
);
都是些 windows平臺的函式。不是跨平臺的。微軟 真是 煩人。