当前位置:天才代写 > tutorial > C语言/C++ 教程 > C++:判定文件夹(folder)是否存在(exist)

C++:判定文件夹(folder)是否存在(exist)

2017-11-02 08:00 星期四 所属: C语言/C++ 教程 浏览:444

写入措施, 需要在文件夹中写入数据, 假如文件夹不存在, 则无法写入, 在措施进口需要判定;

由于属于系统层, Windows的两种办理要领.

参考: http://stackoverflow.com/questions/8233842/how-to-check-if-directory-exist-using-c-and-winapi
1. GetFileAttributesA()函数

DWORD d = GetFileAttributesA(const char* filename); #include <windows.h>
windows系统函数, 判定文件夹是否存在;

代码:

#include <iostream>  
#include <string>  
      
#include <windows.h>  
      
using namespace std;  
      
bool dirExists(const std::string& dirName_in)  
{  
    DWORD ftyp = GetFileAttributesA(dirName_in.c_str());  
    if (ftyp == INVALID_FILE_ATTRIBUTES)  
        return false;  //something is wrong with your path!  
      
    if (ftyp & FILE_ATTRIBUTE_DIRECTORY)  
        return true;   // this is a directory!  
      
    return false;    // this is not a directory!  
}  
      
int main(void)   
{  
    std::string folder("./Test");  
      
    if (dirExists(folder)) {  
        std::cout << "Folder : " << folder << " exist!" << std::endl;  
    } else {  
        std::cout << "Folder : " << folder << " doesn't exist!" << std::endl;  
    }  
      
    std::string nofolder("./TestNo");  
      
    if (dirExists(nofolder)) {  
        std::cout << "Folder : " << nofolder << " exist!" << std::endl;  
    } else {  
        std::cout << "Folder : " << nofolder << " doesn't exist!" << std::endl;  
    }  
      
    return 0;  
}

2. _access()函数

int access(const char *filename, int mode); #include <io.h>

mode设为0, 判定文件是否存在; 返回0, 文件存在;

代码:

#include <iostream>  
#include <string>  
      
#include <io.h>  
      
using namespace std;  
      
bool dirExists(const std::string& dirName_in)  
{  
    int ftyp = _access(dirName_in.c_str(), 0);  
      
    if (0 == ftyp)  
        return true;   // this is a directory!  
    else 
        return false;    // this is not a directory!  
}  
      
int main(void)   
{  
    std::string folder("./Test");  
      
    if (dirExists(folder)) {  
        std::cout << "Folder : " << folder << " exist!" << std::endl;  
    } else {  
        std::cout << "Folder : " << folder << " doesn't exist!" << std::endl;  
    }  
      
    std::string nofolder("./TestNo");  
      
    if (dirExists(nofolder)) {  
        std::cout << "Folder : " << nofolder << " exist!" << std::endl;  
    } else {  
        std::cout << "Folder : " << nofolder << " doesn't exist!" << std::endl;  
    }  
      
    return 0;  
}

作者:csdn博客 Spike_King

 

    关键字:

天才代写-代写联系方式