C++,文件,文件夹操作,创建、删除、检测

 推荐  filesystem ,特别好用,除了新建、删除、复制、移动文件夹,还支持磁盘空间检测,权限检测,路径处理。

 

一、使用系统库

复制代码
// 检测文件,检测文件夹
/* windows
* 头文件:io.h
* 函数:int access(const char* _Filename, int _AccessMode);
* 
* _AccessMode参数说明: 00表示只判断是否存在,02表示文件是否可执行, 04表示文件是否可写,06表示文件是否可读
*                     有访问权限返回0,否则返回-1
*/
/* Linux
* 头文件:unistd.h
* 函数:int access(const char* _Filename, int _AccessMode);
*
* _AccessMode参数说明: 00表示只判断是否存在,02表示文件是否可执行, 04表示文件是否可写,06表示文件是否可读
*                     有访问权限返回0,否则返回-1
*/


// 创建文件夹
/* windows
* 头文件:direct.h
* 函数:int mkdir(const char* _Path);
* 返回值:0(成功),-1(失败)
*/
/* Linux
* 头文件:sys/types.h, sys/stat.h
* 函数:int mkdir(const char* _Path, mode_t mode);
* 返回值:0(成功),-1(失败)
*/


// 删除文件夹
/* windows
* 头文件:direct.h
* 函数:int rmdir(const char* _Path);
* 返回值:0(成功),-1(失败)
*/
/* Linux
* 头文件:sys/types.h, sys/stat.h
* 函数:int rmdir(const char* _Path);
* 返回值:0(成功),-1(失败)
*/
复制代码

 

 

二、使用C++库

复制代码
#include <iostream>
#include <filesystem>
using namespace std;

int main()
{
    cout << "C++17 Filesystem" << endl;

    // 创建文件夹
    bool ret = std::filesystem::create_directory("C:\\t1");
    if (ret) 
    {
        cout << "创建文件夹成功" << endl;
    }

    // 复制文件
    std::filesystem::copy("C:\\t1\\1.txt", "C:\\t1\\2.txt");

    // 删除文件,删除文件夹
    ret = std::filesystem::remove("C:\\t1\\2.txt");
    if (ret)
    {
        cout << "删除文件成功" << endl;
    }


    // =========  路径处理 ==========
    // 路径拼接
    std::filesystem::path base_path = "C:\\t1";
    std::filesystem::path file_name = "a.txt";
    std::filesystem::path full_path = base_path / file_name;
    cout << "拼接路径:" << full_path << endl;

    // 路径解析
    cout << "文件夹路径:" << full_path.parent_path() << endl;
    cout << "完整文件名:" << full_path.filename() << endl;
    cout << "文件名(不带后缀):" << full_path.stem() << endl;
    cout << "文件名后缀:" << full_path.extension() << endl;


    return 0;
}
复制代码

 

 三、使用Windows API

复制代码
#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    // 复制文件:False(文件存在,覆盖),True(文件存在,拷贝失败)
    BOOL ret = CopyFile(TEXT("d:\\1.txt"), TEXT("d:\\2.txt"), FALSE);
    
    // 移动文件
    bool ret = MoveFile(TEXT("d:\\1.txt"), TEXT("d:\\a\\2.txt"));
    
    // 删除文件
    BOOL ret = DeleteFile(TEXT("D:\\1.txt"));
    
    // 创建空文件
    HANDLE Hfile = CreateFile(TEXT("D:\\1.txt"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    
    // 打开文件
    HANDLE Hfile = CreateFile(TEXT("D:\\1.txt"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
}
复制代码

 

 

 

 

相关链接:https://blog.csdn.net/qq_21438461/article/details/132644824

 

posted @   十一的杂文录  阅读(579)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示