boost::filesystem是Boost C++ Libraries中的一个模块,主要作用是处理文件(Files)和目录(Directories)。该模块提供的类boost::filesystem::path专门用来处理路径。而且,该模块中还有很多独立的函数能够用来执行创建目录、检查文件是否存在等任务。


一、创建Paths

定义路径时需要包含头文件boost/filesystem.hpp,并且使用命名空间boost::filesystem;

路径的创建很简单,仅仅需要向类boost::filesystem::path()的构造器传递一个string;

构造器的输入可以是一个没有意义的字符串,因为构造器不会去检测该路径是否是合法路径及是否存在;

path对象是一个跨平台的路径对象。

path对象的属性有下列这些:

1) path.string()          输出字符串形式的路径

2) path.stem()           文件名,不带扩展名

3) path.extension()   返回文件扩展名

更详细的内容见这里


二、文件和目录

该部分包括下列函数:
         boost::filesystem::status(path)                                       查询文件或目录的状态,返回的是boost::filesystem::file_status类型的对象

boost::filesystem::is_directory()                                    根据获取的状态判断是否是目录,返回bool

boost::filesystem::is_empty()                                        判断是否为空

boost::filesystem::is_regular_file()                                 根据获取的状态判断是否是普通文件,返回bool

boost::filesystem::is_symlink()                                      判断符号连接(在windows系统中,后缀为lnk的文件为连接文件)

boost::filesystem::exists()                                              判断是否存在

boost::filesystem::file_size()                                          返回文件的size,按bytes计算

boost::filesystem::last_write_time()                               返回文件最后一次修改的时间

boost::filesystem::space()                                              返回磁盘的总空间和剩余空间,

boost::filesystem::create_directory()                             创建目录

boost::filesystem::create_directories()                           递归创建整个目录结构

boost::filesystem::remove()                                           删除目录

boost::filesystem::remove_all()                                     递归删除整个目录结构

boost::filesystem::rename()                                           重命名目录

boost::filesystem::copy_file()                                         复制文件

boost::filesystem::copy_directory()                               复制目录

boost::filesystem::absolute()                                           获取文件或目录的绝对路径

boost::filesystem::current_path()                                   如果没有参数传入,则返回当前工作目录;否则,则将传入的目录设为当前工作目录

三、目录迭代(Directory Iterators)

boost::filesystem::directory_iterator()                            迭代目录下的所有文件

boost::filesystem::recursive_directory_iterator()            递归地遍历一个目录和子目录,也就是迭代整个目录结构下的所有文件


四、文件流(File Streams)

头文件<fstream>定义的文件流不能将boost::filesystem::path定义的目录作为参数。如果非要使用path对象打开文件流的话,那就添加头文件<boost/filesystem/fstream.hpp>,如下:

#include <boost/filesystem/fstream.hpp>

#include <iostream>

using namespace boost::filesystem;

int main()

{

path p{"test.txt"};

ofstream ofs{p};

ofs << "Hello, world!\n";

}


参考文献:

1> Boost::filesystem 使用小笔记

2> The Boost C++ Libraries

3> Boost.Filesystem

boost::filesystem总结的更多相关文章

  1. Boost::filesystem 使用小笔记

    今天拿起手要用C++写个小工具,从指定的目录递归遍历文件,然后做一下处理.又翻了一下boost的filesystem库.小结一下,希望能加深印象,免得下次又要查看文档. 1. path对象就是一个跨平 ...

  2. C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem

    原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLT ...

  3. [boost][filesystem] 扫描给定目录下所有项

    Intro. Boost的filesystem可以用来扫描给定目录下的所有项. 实现 具体实现代码如下: 需要包含的头文件和使用的命名空间: #include <boost/filesystem ...

  4. boost::filesystem经常使用使用方法具体解释

    提示: filesystem库提供了两个头文件,一个是<boost/filesystem.hpp>,这个头文件包括基本的库内容.它提供了对文件系统的重要操作. 同一时候它定义了一个类pat ...

  5. MongDB备份error: boost::filesystem::create_directory

    用dump 备份一直提示一个error "error: boost::filesystem::create_directory: The filename, directory name, ...

  6. C++目录遍历:使用第三方库boost.filesystem等

    1. opencv 目录文件遍历 注释:2014 0814 这个代码是基于java的,Java使用托管代码进行目录管理,C++就不那么跨平台了. 原文链接:http://blog.csdn.net/z ...

  7. boost Filesystem

    The library Boost.Filesystem makes it easy to work with files and directories. Paths Paths can be bu ...

  8. (九)boost库之文件处理filesystem

    (九)boost库之文件处理filesystem   filesystem库是一个可移植的文件系统操作库,它在底层做了大量的工作,使用POSIX标准表示文件系统的路径,使C++具有了类似脚本语言的功能 ...

  9. Boost学习之可移植路径操作--filesystem

    Boost.Filesystem 库为对路径.文件和目录进行查询和操作提供了可移植的工具,已经被C++标准委员会接纳包含到TR2中. 编译 使用Boost.Filesystem 库之前要先编译它,请参 ...

随机推荐

  1. 【转】解决keepalived正常启动但是虚IP(VIP)没有生成的问题

    如题所示,keepalived安装配置好之后能够正常启动,但是虚IP并没有生成.接着检查防火墙(iptables)发现也没有相关的限制.稍微郁闷了一下之后,查看了keepalived日志文件,这次成功 ...

  2. SQL中笛卡尔积-cross join的用法

    在数学中,笛卡尔乘积是指两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 假设集合A={a ...

  3. storage和memory

    memory:使用的是值传递,默认使用的是memory,传递的是值 storage:引用传递,传过来的是指针,后面一定要加上internal,private pragma solidity ^; co ...

  4. open live write 代码高亮插件的配置和使用

    第一步:下载open live writer插件,下载地址:http://www.cnblogs.com/memento/p/5995173.html 第二步:找到open live writer的安 ...

  5. echarts tree 树型图层级距离设置

    网上找了半天,没有找到设置层级距离的属性,默认是自动适应的,无奈只能改源码,分享出来希望可以帮到有相同需求的... 上github下载echarts源码包,打开src=>chart=>tr ...

  6. Hadoop第一式:配置Linux环境

    所有操作在虚拟机下完成,虚拟机软件选用VMware Workstation Pro 12 (后文简称为VM) 关于Linux安装不再阐述一.网络环境配置 1)Windows界面 首先在VM页面,点击虚 ...

  7. 在Windows环境下搭建Nginx文件服务器(简单实用版)

    为了解决项目组内容应用,打算把本地的e:tools目录共享出来,具体操作步骤如下1.下载安装包:http://nginx.org/download/nginx-1.9.15.zip2.解压缩3.修改配 ...

  8. IDEA 使用笔记

    IDEA 关闭默认打开上一个项目 File | Settings | Appearance & Behavior | System Settings=> Reopen last proj ...

  9. Scrapy Selectors 选择器

    0. 1.参考 <用Python写网络爬虫>——2.2 三种网页抓取方法  re / lxml / BeautifulSoup 需要注意的是,lxml在内部实现中,实际上是将CSS选择器转 ...

  10. lambda表达式——写多线程

    JDK1.8 中Lambda 表达式的出现,基本可以取替原来的匿名类实现多线程的方式.下面列举常用的常用的三种情况. 一.普通开启异步线程   new Thread(() -> System.o ...