filesystem库是文件系统操作库,可以使用其中的basic_path类用来操作目录、文件,使用需要包含编译好的system库和filesystem库,我们一般不直接使用basic_path,而是使用typedef : path和wpath。 使用它需要包含"boost/filesystem.hpp"。

boost::filesystem::path p1("D:\\dir"); //windows下既可使用斜杠也可使用反斜杠(资源管理器地址栏中使用的就是反斜杠),又因为在c++中反斜杠是转义字符的标志,所以使用反斜杠的话还得再加一个反斜杠boost::filesystem::path p2("D:/dir/data.dat"); //windows下推荐使用正斜杠boost::filesystem::path p3("/user/dir"); //linux下使用正斜杠boost::filesystem::path p4 = "./dir"; //path的构造函数没有声明为explicit,字符串可以隐式转换为path对象p1 /= "child"; //path重载了 /=,其功能与成员append()相同。cout << p1 << endl; //支持流输出操作,输出为"D:\dir\child"if (p1 == p2); //支持比较操作auto iter = p1.begin(); //支持迭代器来迭代其中的字符串std::string strDir = p1.string(); //获取字符串(构造函数中传入的字符串为相对路径的话这里也是相对路径)bool bRes = boost::filesystem::portable_posix_name(strDir); //判断是否符合posix文件命名规范boost::filesystem::windows_name(strDir); //判断是否符合windows文件命名规范boost::filesystem::portable_name(strDir); //相当于portable_posix_name() && windows_nameboost::filesystem::native(strDir); //在windows下相当于windows_name,其它操作系统下只是简单的判断文件名不是空格且不含斜杠boost::filesystem::path parentPath = p3.parent_path(); //获得父路径boost::filesystem::path parentPath = p3.system_complete(); //获得全路径(绝对路径)std::string name = p2.filename().string(); //文件名: data.datstd::string s = p2.stem().string(); //不含扩展名的文件名: datastd::string extName = p2.extension().string(); //扩展名: datp1.is_complete(); //是否是一个完整的绝对路径p1.relative_path(); //获得path的相对路径boost::filesystem::path p("C:/xxx/yyy");p1.root_path(); //根路径: "C:/"p1.root_name(); //根名字:"C:"p1.root_directory(); //根目录: "/"p1.remove_filename(); //删除当前路径中最后的文件名p1.replace_extension("hxx"); //改变文件扩展名// filesystem使用异常来处理文件操作时发生的错误,所以使用的时候应该加上异常处理try{boost::filesystem::file_size(p1); //获得文件大小,文件不存在则会抛出异常}catch (boost::filesystem::filesystem_error& e){cout << e.path1() << endl;cout << e.what() << endl;}boost::filesystem::exists(p1); //是否存在boost::filesystem::is_directory(p1); //是否是目录boost::filesystem::is_regular_file(p1); //是否是普通文件boost::filesystem::is_empty(p1); //目录是否为空或文件大小是否为0boost::filesystem::is_symlink(p1); //是否为链接文件boost::filesystem::is_other(p1); //当文件存在且不是普通文件、目录或链接文件时返回true,其它文件类型可以通过文件状态类file_status获得boost::filesystem::current_path(); //获得当前路径boost::filesystem::initial_path(); //获得进入main函数时的当前路径boost::filesystem::last_write_time(p1); //获得文件最后修改时间boost::filesystem::space(p1); //获得路径下磁盘空间分配情况boost::filesystem::remove(p1); //删除文件或空目录boost::filesystem::remove_all(p1); //删除目录boost::filesystem::create_directory(p1); //创建一级目录boost::filesystem::create_directories(p1); //创建多级目录boost::filesystem::copy_file(p1, p2); //拷贝boost::filesystem::rename(p1, p2); //改名void recursive_dir(const boost::filesystem::path& dir){//使用directory_iterator递归遍历目录boost::filesystem::directory_iterator end; //空的directory_iterator构造函数生成一个指向end的迭代器boost::filesystem::directory_iterator pos(p1); //传入一个path对象后可以使用++开始迭代操作for (; pos != end; pos++){if (boost::filesystem::is_directory(*pos))recursive_dir(*pos); //directory_iterator迭代器返回的类型其实不是path,但它定义了一个到path的类型转换函数,因此这里是隐式转换elsecout << *pos << endl;  //输出文件名}}//directory_iterator不支持深度遍历,可以使用效率更高的recursive_directory_iterator或wrecursive_directory_iteratortypedef boost::filesystem::recursive_directory_iterator rd_iterator;rd_iterator end;rd_iterator pos(p1);for (; pos != end; pos++){//if (boost::filesystem::is_directory(*pos))//pos.no_push(); //退出当前目录层次的遍历,相当于使用directory_iteratorcout << pos.level() << endl; //获得当前目录深度cout << *pos << endl; //输出文件名}

boost--文件、目录操作相关推荐

  1. pythonos模块_Python3 入门教程——os模块使用(文件/目录操作)

    前言 os模块是Python标准库中一个用于访问操作系统的功能模块. 使用os模块中提供的接口,可以轻松实现跨平台访问. 在os模块中提供了一系列访问操作系统功能的接口,如,新建目录.删除目录.变更目 ...

  2. Delphi中ExtractFilePath、ParamStr以及更多文件/目录操作涉及的函数。附加对应的例子...

    先介绍ExtractFilePath和ParamStr ParamStr 该函数的原型是:function paramstr(i: Integer): String; 对于任何的application ...

  3. JSP中的文件操作:数据流、File类、文件浏览、目录操作、上传下载

    ​ 文件可以永久地存储信息,从本质上讲文件就是存放在盘上的一系列数据的集合.应用程序如果想长期保存数据,就必须将数据存储到文件中,这就涉及到文件的操作.而在编写网站应用程序的过程中,有许多地方要对文件 ...

  4. PHP文件和目录操作

    目录操作 $base_dir = 'filelist/'; $fso = opendir($base_dir);//打开目录,返回目录句柄 echo 'Basedir:'.$base_dir.'< ...

  5. python操作目录_详解python中的文件与目录操作

    详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...

  6. python遍历目录压缩文件夹然后在发送邮件_python目录操作之python遍历文件夹后将结果存储为xml...

    Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...

  7. 时间:2014年3月27日文件和目录操作函数

    主要内容: 目录操作:打开.读取.关闭.创建.重命名.删除 文件操作:打开.读.写.关闭.重命名.删除 信息获取函数 filemtime() filesize() file_exists()  is_ ...

  8. python创建文件os_Python之文件与目录操作(os、zipfile、tarfile、shutil)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模块 ...

  9. python代码大全表解释-python文件及目录操作代码汇总

    前言 在python中,内置了文件(file)对象,通过一些内置的方法就可以实现对文件的操作,例如open()方法创建一个文件对象,write()方法向文件写入内容. 一.文件基本操作 1.创建和打开 ...

  10. Python 文件及目录操作

    [文件读写] 1 file = open('filename','r') 2 for line in file.readlines(): 3     process(line) 4 file.tell ...

最新文章

  1. linux特殊符号大全
  2. 【关于重载OnBackPressed无效的解决方案】
  3. Linux下父子进程的全局变量
  4. android培训内容明细,记录Android开发学习
  5. 成功解决 编程语言代码结果中输出-9223372036854775808的数据
  6. php mysql 条件查询语句_where 查询条件-Medoo - 高效的轻量级PHP数据库框架, 提高开发效率!...
  7. Android view变形,android仿变形金刚效果实现MatchView
  8. Lua基础之coroutine(协程)
  9. C++基础知识(二)命名空间
  10. ubuntu python3.5安装_Ubuntu14.04安装使用Python3.5
  11. 哈理工OJ 1924 分数表达式(暴力枚举)
  12. html如何添加阿里图标,CSS引入阿里iconfont图标步骤
  13. 苹果花期行情结束见顶?铁矿石认沽次末日25倍,纯碱09-01季节性反套?2022.5.10
  14. iPhone前置排线教程
  15. JHOST邀请码,2012年7月31日申请,2012年8月31日过期
  16. 服务器常见高可用方案
  17. 计算机原始时代到现在著名的黑客
  18. Git实用技巧36招
  19. python的dev包怎么安装_python-dev如何安装 sudo apt-get install python-dev ?
  20. Java8 提供CompletableFuture来简化高并发异步处理编程

热门文章

  1. 你哪来这么多事(五):职工信息插入
  2. mysql 分号 存储过程_MySql 存储过程
  3. INSTALL_FAILED_VERSION_DOWNGRADE
  4. databinding 入门 知识 给TextView 赋值
  5. SQL*Plus 系统变量之15 - DESC[RIBE]
  6. hdu2006 求奇数的乘积【C++】
  7. 怎么给html页面添加网格线,html – 如何使用css制作网格(如图纸网格)?
  8. 早上突然看明白 shader和材质球的关系
  9. Linux服务器搭建常用环境(一)
  10. HDU——1106排序(istringstream的使用、STLvector练习)