目录
一、简介
二、程序环境
三、程序示例
1、创建多级路径
2、新建文件
3、删除文件
4、文件重命名
一、简介
本文通过程序介绍文件的操作方法,包括文件的新建(任意位置)、删除、重命名,以及多路目录的创建方法。
二、程序环境
环境:Windows
语言:C++ 11
三、程序示例
1、创建多级路径
特性:1)支持多级路径的创建;2)程序正确执行后返回0;
#include <iostream>
#include <fstream>
#include <vector>
#include <stdio.h>
#include <io.h>
#include <direct.h>
using namespace std;
int MakeDirectory(string strDir)
{
int s32Ret = 0;
vector<string> vDirs;
/* 解析多级路径 */
for (int i = 0; i < strDir.size(); i++)
{
if (strDir[i] == '\\')
{
strDir[i] = '/';
}
if (strDir[i] == '/' && i != strDir.size() - 1)
{
vDirs.push_back(strDir.substr(0, i));
}
else if (i == strDir.size() - 1)
{
vDirs.push_back(strDir);
}
}
/* 创建多级路径 */
for (auto strPath : vDirs)
{
/* 文件是否存在:0;可写:2;可读:4;可读可写:6 */
s32Ret = _access(strPath.c_str(), 0);
if (s32Ret != 0)
{
s32Ret = _mkdir(strPath.c_str());
if (s32Ret != 0)
{
printf("目录创建失败!目录=%s\n", strPath.c_str());
return -1;
}
}
}
return 0;
}
使用方法:(其中子目录"tet\\format\\"是之前不存在的)
MakeDirector("C:\\Users\\Peak\\Desktop\\tet\\format\\");
2、新建文件
特性:1)支持在任意位置处新建;2)程序正确执行后返回0;3)需要借助多级路径函数;
#include <iostream>
#include <fstream>
#include <vector>
#include <stdio.h>
#include <io.h>
#include <direct.h>
using namespace std;
int touch(string strFileName)
{
int s32Ret = 0;
int s32Pos = 0;
string strDir = "";
/* 解析文件的路径 */
for (auto it = strFileName.rbegin(); it != strFileName.rend(); ++it)
{
if (*it == '\\' || *it == '/')
{
s32Pos = strFileName.rend() - it;
strDir = strFileName.substr(0, s32Pos);
break;
}
}
/* 创建路径 */
if (s32Pos != 0)
{
s32Ret = MakeDirectory(strDir);
if (s32Ret != 0)
{
printf("路径创建失败!路径名=%s, 原因=%s\n", strDir.c_str(), strerror(errno));
return -1;
}
}
/* 生成文件 */
fstream pFile(strFileName, ios::out);
if (!pFile.is_open())
{
printf("文件创建失败!文件名=%s, 原因=%s\n", strFileName.c_str(), strerror(errno));
return -1;
}
pFile.close();
return 0;
}
使用方法:(其中子目录"tet\\format\\"是之前不存在的)
touch("C:\\Users\\Peak\\Desktop\\tet\\format\\aa.txt");
3、删除文件
特性:1)成功返回0;
#include <stdio.h>
s32Ret = remove("test.txt");
if (s32Ret != 0)
{
printf("remove exec failed! filename=%s, reason=%s\n", strFileName.c_str(), strerror(errno));
return -1;
}
4、文件重命名
特性:1)成功返回0;
s32Ret = rename("tet\\format\\aa.txt", "tet\\format\\bb.txt");
if (s32Ret != 0)
{
printf("rename exec failed! filename=%s, reason=%s\n", strFileName.c_str(), strerror(errno));
return -1;
}
|