Boost::filesystem 使用小笔记
今天拿起手要用C++写个小工具,从指定的目录递归遍历文件,然后做一下处理。又翻了一下boost的filesystem库。小结一下,希望能加深印象,免得下次又要查看文档。
1. path对象就是一个跨平台的路径对象。有许多方法访问路径的各个部分,也用它的iterator迭代路径中的各个部分;
path构造目录结构的时候使用“/”运算符,非常直观。
比如path p1;
path p2 = p1/"something"; p1 /= "xxx.xxx";
2. filesystem名字空间一下有一些全局的函数,比如exists可以判断path是不是存在,is_directory函数判断是不是目录,file_size获得大小--该大小是一个夸平台的类型,可以表示32位或者64的大小;
其他is方法还有:
is_empty
is_other
is_regular_file
is_symlink
3. 最方便的一个功能是遍历path里的所有内容。directory_iterator。
path p;
directory_iterator(p)就是迭代器的起点,无参数的directory_iterator()就是迭代器的终点。
还可以递归迭代,把上面的directory_iterator换成recursive_directory_iterator即可。
4. 创建目录。这里特别要提到一个方法是bool create_directories(const path& p); 如果p是一个目录(也就是is_diretory返回true)。它会递归的创建整个目录结构,免去自己一个一个创建的烦恼了。
其他创建方法还有:
create_directories
create_directory
create_hard_link
create_symlink
5. 还可以复制目录
copy_directory
copy_file
copy_symlink
注意:复制文件的方法copy_file方法在Xcode使用LLVM库的情况下连接的时候会报错,没有找到符号。可以直接用copy方法,该方法自己判断各种情况自动调用对应的方法(比如符号连接,目录,或者普通文件)。
6. 删除remove 递归删除remove_all
7. 改名字rename
8. 如果包含了<boost/filesystem/fstream.hpp>的话,还可以让fstream接受path作为参数。
BTW,使用filesystem需要编译boost,现在版本只要执行一个脚本就能编译完成了,比以前方便多了。
不过,还是要提一下Xcode环境下使用的话,要选择GCC C++ standard library。
GCC的哭虽然没有LLVM 的库先进(我是说支持C++11方面),不过,大部分的C++11标准还是支持的。
目前发现是GCC的库没有std::regex。不过,既然用boost的话那就用boost的regex好了。反正std的也是从boost拿过来而已。
Boost::filesystem 使用小笔记的更多相关文章
- boost::filesystem总结
boost::filesystem是Boost C++ Libraries中的一个模块,主要作用是处理文件(Files)和目录(Directories).该模块提供的类boost::filesyste ...
- C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem
原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLT ...
- 转:【iOS开发每日小笔记(十一)】iOS8更新留下的“坑” NSAttributedString设置下划线 NSUnderlineStyleAttributeName 属性必须为NSNumber
http://www.bubuko.com/infodetail-382485.html 标签:des class style 代码 html 使用 问题 文件 数据 ...
- 小笔记:Timer定时间隔时间操作
小笔记:Timer定时间隔时间操作,后面有时间再补充和完善: public class TimingSvc { /// <summary> /// 定时器,执行定时任务 /// </ ...
- 关于 linux中TCP数据包(SKB)序列号的小笔记
关于 SKB序列号的小笔记 为了修改TCP协议,现在遇到了要改动tcp分组的序列号,但是只是在tcp_sendmsg函数中找到了SKB的end_seq 一直没有找到seq 不清楚在那里初始化了,就 ...
- [boost][filesystem] 扫描给定目录下所有项
Intro. Boost的filesystem可以用来扫描给定目录下的所有项. 实现 具体实现代码如下: 需要包含的头文件和使用的命名空间: #include <boost/filesystem ...
- boost::filesystem经常使用使用方法具体解释
提示: filesystem库提供了两个头文件,一个是<boost/filesystem.hpp>,这个头文件包括基本的库内容.它提供了对文件系统的重要操作. 同一时候它定义了一个类pat ...
- Linux下postgres9.4 版本的单机版安装小笔记
1.添加RPMyum install https://download.postgresql.org/pub/repos/yum/9.4/redhat/rhel-7-x86_64/pgdg-redha ...
- MongDB备份error: boost::filesystem::create_directory
用dump 备份一直提示一个error "error: boost::filesystem::create_directory: The filename, directory name, ...
随机推荐
- 关于SOQL(一)
SOQL 是Salesforce中的查询语言,他的全称是Salesforce Object Query Language. 从字面上就能够看出,这个语言是一种基于对象的查询语言. 在Salesforc ...
- Arduino 跷跷板(2016-01-04)
前言这是参加社区活动,用赠送的 LilyPad 来做小实验,也体验了一把艺术的LilyPad!本来是申请 nano 的,不知道怎么的就出错啦,申请成 LilyPad 了,这个实验应该用 nano 比较 ...
- POJ 1256.Anagram
2015-06-04 问题简述: 输出一串字符的全排列,顺序不同于一般的字母序,而是 A<a<B<b......<Z<z.所以应该重写一个比较函数. 原题链接:http: ...
- NSNumber与NSInteger的区别
Objective-C 支持的类型有两种:基本类型 和 类. 基本类型,如同C 语言中的 int 类型一样,拿来就可以直接用. 而类在使用时,必须先创建一个对象,再为对象分配空间,接着做初始化和赋值 ...
- oracle 10g函数大全--分析函数
oracle分析函数--SQL*PLUS环境 一.总体介绍 12.1 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达 ...
- Qt中的对象类型转换(Qstring 转换char*有三种方法)
char * 与 const char *的转换 char *ch1="hello11"; const char *ch2="hello22"; ch2 = c ...
- IOS中使用像素位图(CGImageRef)对图片进行处理
IOS中对图片进行重绘处理的方法总结 一.CGImageRef是什么 CGImageRef是定义在QuartzCore框架中的一个结构体指针,用C语言编写.在CGImage.h文件中,我们可以看到下面 ...
- 设置outlook自动回复
当有同事需要出差时,或者不能即时回复邮件时,可用此功能. 下面列出设置步骤: 1. 首先,在桌面新建一个用以保存模板的文件夹,例如:emaii. 2. 新建一封邮件,输入你要自动回复的内容.另存为 ...
- iOS创建本地通知和删除对应的通知,工作日通知
本文的代码主要是:创建本地通知,删除对应的本地通知,创建工作日闹钟 直接上代码: // // ViewController.m // LocalNSNotification // // Created ...
- 2014 HDU多校弟五场J题 【矩阵乘积】
题意很简单,就是两个大矩阵相乘,然后求乘积. 用 Strassen算法 的话,当N的规模达到100左右就会StackOverFlow了 况且输入的数据范围可达到800,如果变量还不用全局变量的话连内存 ...