boost::filesystem总结
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";
}
参考文献:
boost::filesystem总结的更多相关文章
- Boost::filesystem 使用小笔记
今天拿起手要用C++写个小工具,从指定的目录递归遍历文件,然后做一下处理.又翻了一下boost的filesystem库.小结一下,希望能加深印象,免得下次又要查看文档. 1. path对象就是一个跨平 ...
- C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem
原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLT ...
- [boost][filesystem] 扫描给定目录下所有项
Intro. Boost的filesystem可以用来扫描给定目录下的所有项. 实现 具体实现代码如下: 需要包含的头文件和使用的命名空间: #include <boost/filesystem ...
- boost::filesystem经常使用使用方法具体解释
提示: filesystem库提供了两个头文件,一个是<boost/filesystem.hpp>,这个头文件包括基本的库内容.它提供了对文件系统的重要操作. 同一时候它定义了一个类pat ...
- MongDB备份error: boost::filesystem::create_directory
用dump 备份一直提示一个error "error: boost::filesystem::create_directory: The filename, directory name, ...
- C++目录遍历:使用第三方库boost.filesystem等
1. opencv 目录文件遍历 注释:2014 0814 这个代码是基于java的,Java使用托管代码进行目录管理,C++就不那么跨平台了. 原文链接:http://blog.csdn.net/z ...
- boost Filesystem
The library Boost.Filesystem makes it easy to work with files and directories. Paths Paths can be bu ...
- (九)boost库之文件处理filesystem
(九)boost库之文件处理filesystem filesystem库是一个可移植的文件系统操作库,它在底层做了大量的工作,使用POSIX标准表示文件系统的路径,使C++具有了类似脚本语言的功能 ...
- Boost学习之可移植路径操作--filesystem
Boost.Filesystem 库为对路径.文件和目录进行查询和操作提供了可移植的工具,已经被C++标准委员会接纳包含到TR2中. 编译 使用Boost.Filesystem 库之前要先编译它,请参 ...
随机推荐
- js在数组arr中随机获取count数量的元素
// 在数组arr中随机获取count数量的元素; const getRandomArrayElements = (arr, num) => { // 新建一个数组,将传入的数组复制过来,用于运 ...
- java----SAX解析XML
XML: 可扩展标记语言 1.充当显示数据 2.储存数据 3.传输数据 SAX: 水电费 基于事假驱动,顺序读写,速度快 不能任意读取节点,灵活性差 解析时,占用内存小 import org.xml. ...
- vue 父子之间通信及非父子之间通信
直接看图说话 vue Bus总线 import Vue from 'vue';import VueBus from 'vue-bus';Vue.use(VueBus); 这是子组件要发到父组件的写法 ...
- WPF 杂记
1,跨屏最大化 单屏幕的时候我们可以设置 WindowState 来使应用最大化 当接多个屏幕的时候,就需要下面这个设置: private void FullScreen() { this.Windo ...
- Linux系统备份还原工具1(DD)
注意:只要时运行备份,建议都使用Ubuntu的Live CD功能启动来操作(即启动盘下的试用Ubuntu而不安装的功能),因为这样可以减少资源占用造成的备份不完整. 说明: 1.使用DD进行硬盘备份可 ...
- Redis常见面试题
介绍:Redis 是一个开源的使用 ANSI C 语言编写.遵守 BSD 协议.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的 API的非关系型数据库. 传统数据 ...
- 第一篇 Flask初始
Python 现阶段三大主流Web框架 Django Tornado Flask 对比 1.Django 主要特点是大而全,集成了很多组件,例如: Models Admin Form 等等, 不管你用 ...
- 2017-10-22—LD激光二极管原理
直接摘抄百科了: 在讲激光产生机理之前,先讲一下受激辐射.在光辐射中存在三种辐射过程, 一是处于高能态的粒子自发向低能态跃迁,称之为自发辐射; 二是处于高能态的粒子在外来光的激发下向低能态跃迁,称之为 ...
- Handler Looper 解析
文章讲述Looper/MessageQueue/Handler/HandlerThread相关的技能和使用方法. 什么是Looper?Looper有什么作用? Looper是用于给线程(Thread) ...
- Android源代码下载 “Gerrit下载源代码”
repo init -u ssh://jenkins@gerrit.y:29419/manifest -m k86A.xml 使用-m参数指定具体使用的是k86A.mxl文件 步骤1. curl ht ...