欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ - 判断文件夹(folder)是否存在(exist)

程序员文章站 2022-05-09 23:50:30
...

判断文件夹(folder)是否存在(exit)


本文地址: http://blog.csdn.net/caroline_wendy/article/details/21734915

写入程序, 需要在文件夹中写入数据, 如果文件夹不存在, 则无法写入, 在程序入口需要判断;

由于属于系统层, Windows的两种解决方法.

参考: http://*.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;
}

--------------------- 
作者:SpikeKing 
来源:CSDN 
原文:https://blog.csdn.net/caroline_wendy/article/details/21734915 
版权声明:本文为博主原创文章,转载请附上博文链接!

相关标签: 路径 文件