首页 > 编程语言 >C++,文件,文件夹操作,创建、删除、检测

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

时间:2024-04-12 17:58:09浏览次数:24  
标签:文件 const 删除 int C++ char 文件夹 头文件

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

 

 

 

 

 

 

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

 

标签:文件,const,删除,int,C++,char,文件夹,头文件
From: https://www.cnblogs.com/shiyixirui/p/18131723

相关文章

  • C++生成随机数
    C++11标准#include<iostream>#include<random>usingnamespacestd;intmain(){cout<<"C++11"<<endl;default_random_enginerandom(time(nullptr));uniform_int_distribution<int>random_num1(1,100......
  • 数据库物理删除和逻辑删除的区别 ?
    一、主要区别:物理删除和软删除是数据库中常见的两种数据删除方式,它们的主要区别在于数据的处理方式和是否永久删除数据。 二、概念:物理删除:物理删除是指从数据库中彻底删除数据,包括数据记录和关联的索引等,使其完全消失。物理删除释放了存储空间,并且被删除的数据无法再......
  • 关于C++作用域符的一种用法
    当作用域符号::前不带类名,或者namespace名的时候,表示是全局作用域的意思,也就是表示所调用的函数是全局函数,或者是某个动态库的函数,这对与代码的可阅读性有很大的帮助,因为它与类型成员函数的调用做了区分,表明该函数不是类成员函数如下图的send()函数,其前面的::表明send()函数不是......
  • linux C++程序测试命令的一种实现
    linuxC++程序测试命令的一种实现前言在程序开发调试过程中,或者已经部署的情况下,我们常常需要执行一些测试命令。在命令行端输入命令,然后程序执行,说起来简单,但是当程序本身有很多终端调试信息输出时,命令输入很不方便。针对上述问题,以下提供一个使用消息队列的命令行测试小工具......
  • C++陷阱—指定的返回类型的函数实际没有返回时会发生什么
    当一个string变量作为左值接收函数返回,当函数没有正确返回时,该string变量被如何构造?请看如下代码:#include<iostream>#include<string.h>usingnamespacestd;stringfoo(){if(0){return"youget";}}intmain(intargc,char**argv){......
  • C++编译器对溢出的默认处理
    C++编译器对溢出的默认处理在算数运算中,有一个比较头疼又必须要处理的事情:“溢出”,当我们有所疏忽,没有对溢出的情况做处理时,在我们不知情下就会产生很诡异的bug!那么当我们没有做溢出处理时,编译器的默认处理方式是什么呢?下面我们探究一下这个问题。测试环境Linux4.15.0#16.0......
  • C++观察者模式的实现
    C++观察者模式的实现观察者模式介绍观察者模式是软件设计模式里面一种很常用又很重要的一种设计模式,观察者模式又叫做发布-订阅(Publish/Subscribe)模式。也就是主题对象(subject)发布通知,订阅该主题的多个观察者(observer)可以收到通知从而更新自己。主题对象Subject发出通知时并不......
  • C++陷阱 — C++ auto变量类型推导
    问题描述C++使用auto类型声明一个单例对象的引用时,通过该auto变量来访问单例,是否等同于使用单例类::Instance()来访问单例呢?试看如下的例子:#include<stdint.h>#include<iostream>#include<string>#include<map>usingnamespacestd;classSingleClass{public:......
  • Linux服务器文件删除恢复方法XFS篇
    XFS文件系统文件被删除后,可以使用xfs_undelete工具进行恢复。值得注意的是:XFS文件系统的特性,文件删除后文件名即丢失,哪怕能恢复数据,文件名也恢复不了,所以在恢复之前一定要知道文件类型,最好还要知道创建时间、文件大小等信息,知道的越多越容易恢复。接下来安装xfs_undelete工具,以......
  • VSCode 如何删除无用的语言格式?
    1.情景展示在VisualStudioCode当中,支持很多语言格式。但问题在于,我只是将它当做NotePad++的替代品。当我通过Ctrl+N新建一个文件,并将指定的代码拷贝到VSCode中后,由于默认开启了自动检测语法功能。VSCode总是将java代码识别成Groovy语言,真他妈离谱。如何解决这个问题?2.......