文件操作程序

目录

一、简介

二、程序环境

三、程序示例

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;
}

猜你喜欢

转载自blog.csdn.net/u014587123/article/details/123935650
今日推荐