您的位置:首页 > 编程语言 > C语言/C++

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

2015-03-16 21:22 232 查看
文件夹的操作和文件的操作有许多种方式,这一系列的文章将介绍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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: