BOOST 库中filesyatem 库的学习

本文详细介绍了Boost库中的FileSystem模块,包括基本的路径表示、可移植性文件名检查、路径处理、异常处理、文件状态检查、文件属性、文件操作以及目录遍历等功能。通过示例展示了如何使用该库进行文件查找、文件名模糊查询和目录拷贝等操作。
摘要由CSDN通过智能技术生成
/*FileSyatem 库的学习
------------------------------------------------------------------------------------------------------------库的使用方式
嵌入源码的形式:
#define BOOST_SYSTEN_NO_LIB
#define BOOST_FILESYSTEM_NO_LIB
#include<boost\filesystem.hpp>
-----------------------------------------------------------------------------------------------------------类摘要
filesystem 库的核心类是basic_path 通常我们不直接使用basic_path而是使用预定义的path和wpath
typedef basic_path<std::string,path_traits>path;
------------------------------------------------------------------------------------------------------------路径表示
posix 语法使用斜杠(/)来分隔文件名和目录名,点号(.)表示当前目录,双点号(..)表示上一级目录
path p1("./a_dir");
path p2("/usr/local/lib");
path也支持操作系统的原生路径表示比如windows下使用盘符分隔符和反斜杠(\):
path p3("c:\\temp\\test.text");
path p4("d:/boost/boostget");
空的构造函数创建一个空路径对象,不表示任何路径,成员函数empty可以判断路径是否为空
path p5;
assert(p.empty());
path 重载了operator/=可以使用普通路径一样用/来追加路径,成员函数append()也可以追加一个字符串序列
char str[]="the path is (/root).";
path p(str+13,str+14);
p/="etc";追加路径
string filename="xinetd.conf";
p.append(filename.begin(),file.end());
结果:p=/etc/xinetd.conf;


system_complete(p)返回路径在当前文件系统中的完整文件路径
--------------------------------------------------------------------------------------------------------------------可移植的文件名
filesystem提供了一系列的文件名检查函数可以根据系统命名规则判断一个文件字符串是否有效
portable_posix_name()和windows_name()分别检查文件名是否符合POSIX规范和windows规范
函数portable_name()判断名字是否是一个可移植的文件名但名字不能以点好或者连字符开头,允许表示当前目录的“。”和父目录“..”
protable_directory_name()包含了portable_name()并且要求名字不能出现点号
portable_file_name() 类似protable_directory_name()它要求文件名中最多有一个点号并且后缀名不能超过三个字符


filesystem 提供了一个native()函数它判断文件名是否符合本地文件系统名规则在windows等同于windows_name(),其他操作系统知识简单的判断文件名不是空格且不含斜杠
---------------------------------------------------------------------------------------------------------------------路径处理
path的成员函数string()返回标准格式的路径表示,directory_string()返回文件系统格式路径表示,parent_path(),stem(),filename()和extension()分别返回路径中的父路径,不含扩张名的全路径名,文件名和扩展名
is_complete()函数检测path是否是一个完整的路径(绝对路径),这需要依据具体的文件(操作系统)系统表示
root_name()和root_directory(),root_path()三个函数用于根目录的处理如果path中含有根那么他们分别返回根的名字,根目录和根路径
cout<<p.root_name()<<endl;
cout<<p.root_directory()<<endl;
cout<<p.root_path()<<endl;
这段代码在linux下输出一个空字符串和两个斜杠(/),如果path是如C:/xx/yyy的形式输出的会是 “C”,“/”,“C:/”
relative_path()返回path的相对路径相当于去掉了root_path()
根路径和相对路径的的四个函数都有对应的has_XXX()的形式,用来判断是否存在对应的路径
has_filename()和has_parent_path()用于判断路
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值