文件操作常用函数

文件重命名:

rename(inFilePath.c_str(), outFilePath.c_str())

文件移动(剪切):

MoveFileA(inFilePath.c_str(), outFilePath.c_str())

文件复制:

CopyFile(inFilePath.c_str(),outFilePath.c_str(),FALSE)

获取文件夹下特定格式的所有文件的文件名:

//获取所有的文件名    
void GetAllFiles(string path, vector<string>& files)
{

    long  hFile = 0;
    //文件信息      
    struct _finddata_t fileinfo;//用来存储文件信息的结构体      
    string p;
    if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1)  //第一次查找    
    {
        do
        {
            if ((fileinfo.attrib &  _A_SUBDIR))  //如果查找到的是文件夹    
            {
                if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)  //进入文件夹查找    
                {
                    files.push_back(p.assign(path).append("\\").append(fileinfo.name));
                    GetAllFiles(p.assign(path).append("\\").append(fileinfo.name), files);
                }
            }
            else //如果查找到的不是是文件夹     
            {
                files.push_back(p.assign(fileinfo.name));
            }

        } while (_findnext(hFile, &fileinfo) == 0);

        _findclose(hFile); //结束查找    
    }

}

//获取特定格式的文件名
void GetAllFormatFiles(string path, vector<string>& files, string format)
{
    //文件句柄      
    long   hFile = 0;
    //文件信息      
    struct _finddata_t fileinfo;
    string p;
    if ((hFile = _findfirst(p.assign(path).append("\\*" + format).c_str(), &fileinfo)) != -1)
    {
        do
        {
            if ((fileinfo.attrib &  _A_SUBDIR))
            {
                if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
                {
                    GetAllFormatFiles(p.assign(path).append("\\").append(fileinfo.name), files, format);
                }
            }
            else
            {
                files.push_back(p.assign(fileinfo.name));
            }
        } while (_findnext(hFile, &fileinfo) == 0);

        _findclose(hFile);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我的博客

开发属于自己的composer

1.新建一个git仓库 备注:可以在github建立,如果要建立私有的composer,可以自己搭建git仓库 2.初始化composer文件 执行compo...

36711
来自专栏云计算

ASP.NET MVC 6路由技术

在我们跳转到自定义路由之前,我们必须先了解下MVC6基于MVC5的基本变化。 ASP.NET MVC6将所有必要的启动服务,定义和配置的应用程序依赖关系放在一个...

1806
来自专栏张善友的专栏

控制ASP.NET Web API 调用频率

很多的api,例如GitHub’s API 都有流量控制的做法。使用速率限制,以防止在很短的时间量客户端向你的api发出太多的请求.例如,我们可以限制匿名API...

2249
来自专栏开发与安全

linux系统编程之进程(五):终端、作业控制与守护进程

一、终端的概念 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal)...

2459
来自专栏张善友的专栏

Windows 7 上安装Visual Studio 2015 失败解决方案

安装之前先要看看自己的系统支不支持,具体的可以看:https://www.visualstudio.com/en-us/visual-studio-2015-s...

2158
来自专栏点点滴滴

KMS激活Windows与Office vol版

1532
来自专栏漫漫全栈路

【译】ASP.NET MVC 6路由技术

原文作者:Pramod Gawande 原文地址:https://dzone.com/articles/aspnet-mvc-6-routing-techniq...

3037
来自专栏python3

python自动化脚本nginx_status

运维自动化,已经成为运维必不可少的一部分,下面附上自己写的监控nginx_status脚本,大神轻喷

731
来自专栏晓晨的专栏

如何编写.NET Core Global Tools (附两个案例)

911
来自专栏张善友的专栏

升级个人网站框架组件IBatisNet+Castle

今天晚上花了两个小时从Castle网站拿到最新的Castle.Facilities.IBatisNetIntegration代码,将IBatisNet版本升级到...

2247

扫码关注云+社区