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

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

 

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

 

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

由于属于系统层, 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;
}

 

 

 

 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SpikeKing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值