IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 文件操作程序 -> 正文阅读

[C++知识库]文件操作程序

目录

一、简介

二、程序环境

三、程序示例

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

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 11:50:13  更:2022-04-04 11:55:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:56:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码