牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2015-03-16 投稿人: 浏览次数:3031

文件夹的操作和文件的操作有许多种方式,这一系列的文章将介绍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;  // 确保以 "" 结尾 
	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;  // 确保以 "" 结尾 
	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;  // 确保以 "" 结尾 
	BOOL bExist = PathIsDirectory(buffer);
	delete buffer;
	return bExist==FALSE?false:true;
}
      判断一个文件是否存在

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



声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。