c++文件及文件夹操作(一)

文件夹的操作和文件的操作有许多种方式,这一系列的文章将介绍C++对文件的操作,本篇blog介绍文件夹和文件的创建和删除,以及判断他们是否存在

如何创建一个文件夹?

1、 使用dos命令

int FileOperate::CreateFolderByDos(string strName)
{
	string strFolder = "md ";
	strFolder += strName;
	return system(strFolder.c_str());
}
       这里要注意,文件夹的格式必须是 F:\\ 格式的,不要使用反斜杠 /否则创建失败

      2、 使用windows提供的API

int FileOperate::CreateFolderByAPI(string strName)
{
	size_t size = strName.length();
	wchar_t *buffer = new wchar_t[size+1];
	MultiByteToWideChar( CP_ACP, 0, strName.c_str(), size, buffer, size * sizeof(wchar_t) );
	buffer[size] = 0;  // 确保以 '\0' 结尾 
	int tmp = CreateDirectory(buffer,0);
	delete buffer;
	return tmp;
}

    如何删除一个文件夹

    1、 使用DOS命令

int FileOperate::DelFolderByDos(string strName)
{
	string strFolder = "rd ";
	strFolder += strName;
	return system(strFolder.c_str());
}
注意文件夹名称不要使用反斜杠

    2、 使用windowsAPI

bool FileOperate::DelFolderByAPI(string strName)
{
	size_t size = strName.length();
	wchar_t *buffer = new wchar_t[size+1];
	MultiByteToWideChar( CP_ACP, 0, strName.c_str(), size, buffer, size * sizeof(wchar_t) );
	buffer[size] = 0;  // 确保以 '\0' 结尾 
	BOOL bResult =  RemoveDirectory(buffer);
	delete buffer;
	if(bResult==TRUE)
	{
		return true;
	}
	return false;
}


      创建一个新文件

      1、 使用流式文件操作方法

bool FileOperate::CreateFileByFILE(string strName)
{
	FILE* file = fopen(strName.c_str(),"wb");
	if(NULL == file)
	{
		return false;
	}
	fclose(file);
	return true;
}

      2、 使用I/O操作方法

bool FileOperate::CreateFileByIO(string strName)
{
	int handle = open(strName.c_str(),O_RDWR|O_CREAT);
	if(-1==handle)
	{
		return false;
	}
	
	close(handle);
	return true;
}

     删除文件

    使用流式文件操作方法

int FileOperate::DeleteFileByFILE(string strName)
{
	return remove(strName.c_str());
}

    判断一个文件夹是否存在

    使用PathIsDirectory 函数,引入头文件 

    

#include<Shlwapi.h>
#pragma comment(lib, "shlwapi.lib")
    实例代码

bool FileOperate::IsFolderExist(string strName)
{
	size_t size = strName.length();
	wchar_t *buffer = new wchar_t[size+1];
	MultiByteToWideChar( CP_ACP, 0, strName.c_str(), size, buffer, size * sizeof(wchar_t) );
	buffer[size] = 0;  // 确保以 '\0' 结尾 
	BOOL bExist = PathIsDirectory(buffer);
	delete buffer;
	return bExist==FALSE?false:true;
}
      判断一个文件是否存在

bool FileOperate::IsFileExist(string strName)
{
	return (access(strName.c_str(), 0) == 0); 
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

酷python

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

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

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

打赏作者

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

抵扣说明:

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

余额充值