Boost中文件系统类FileSystem全面解析
来源:互联网 发布:shell编程入门书籍推荐 编辑:程序博客网 时间:2024/05/20 06:50
Boost中文件系统类FileSystem全面解析
程序开发者难免会遇见对文件进行操作,例如,定义文件路径,判断文件是否存在等。原生的CPP对文件操作功能支持的较弱,因此CPP标准委员会开发的Boost库中提供的强大的操作文件库--FileSystem。本文将对FileSystem类进行全面解析,最后通过实例讲解常用的功能。
1、 path类
path类是FileSystem中的基础类,提供的文件路径的存储功能,其构造函数可以接受C类型的字符串,也可以接受string类型的字符串。path采用标准的POSIX语法表示可移植的文件路径表示,即采用斜杠'/'分割文件路径,这也是UNIX和LINUX的常用表示方式。windows采用反斜杠'\'表示文件路径之间的分割。
例如:
//定义文件路径
boost::filesystem::path readPath ("./cmwqq2008/cmw.txt");
//定义目录
boost::filesystem::path readDir ("./cmwqq2008/");
1.1 path类提供的函数
empty()函数用于判断path类的路径字符串是否为空
operator/=,path类重载了operator/=操作符,可以向普通路径一样,采用斜杠(/)实现路径之间的追加。
例如:追加目录,也可以追加文件
//定义目录
boost::filesystem::path readDir ("./cmwqq2008/");
readDir/= "China";
执行后,readDir = "./cmwqq2008/China";
(a) string(),返回标准格式的路径表示;
(b) parent_path(),返回路径中的父路径;
(c)stem() 不含有扩展名的全路径;
(d) extension() 扩展名;
(e) filename() 文件名;
(f) root_name() 返回根的名字;
(g)root_directory()返回根目录;
(h) root_path()返回根路径;
(i)relative_path()返回相对路径;
(j) has_filename()判断是否具有文件名;
(k) has_parent_path() 判断是否具有父路径;
//程序如下所示
#include <iostream>
#include <cstdlib>
using namespace std;
#include <boost/filesystem.hpp>
using namespace boost;
using namespace boost::filesystem;
int main(int argc, char **argv)
{
//定义文件路径
boost::filesystem::path readPath ("d:/cmwqq2008/cvpr/cmw.txt");
//定义目录
boost::filesystem::path readDir ("./cmwqq2008/");
readDir/= "China";
//判断轮径是否为空
bool flag = readPath.empty();
std::cout<<"flag="<<flag<<std::endl;
//返回标准路径名称
std::string stdName = readPath.string();
std::cout<<"stdName="<<stdName<<std::endl;
//不含扩展名的文件名称。
boost::filesystem::path stemStr = readPath.stem();
std::cout<<"stemStr="<<stemStr<<std::endl;
//返回文件扩展名
boost::filesystem::path extName = readPath.extension();
std::cout<<"extName="<<extName<<std::endl;
//返回文件名称
boost::filesystem::path fileName = readPath.filename();
std::cout<<"filename="<<fileName<<std::endl;
//返回父路径
boost::filesystem::path parentPath = readPath.parent_path();
std::cout<<"parentPath="<<parentPath<<std::endl;
//返回根的名字
boost::filesystem::path rootName = readPath.root_name();
std::cout<<"rootName="<<rootName<<std::endl;
//返回根目录
boost::filesystem::path rootDir = readPath.root_directory();
std::cout<<"rootDir="<<rootDir<<std::endl;
//返回根路径
boost::filesystem::path rootPath = readPath.root_path();
std::cout<<"rootPath="<<rootPath<<std::endl;
//返回相对路径,=删除root_path()
boost::filesystem::path relativePath = readPath.relative_path();
std::cout<<"relativePath="<<relativePath<<std::endl;
//判断是否具有文件名称
bool hasFileName = readPath.has_filename();
std::cout<<"hasFileName="<<hasFileName<<std::endl;
//判断是否具有父路径
bool hasParentPath = readPath.has_parent_path();
std::cout<<"hasParentPath="<<hasParentPath<<std::endl;
return EXIT_SUCCESS;
}
//程序运行结果如下所示:
1.2 path提供的函数,改变path自身
(a) remove_filename() 删除路径中最后的文件名称,将path变成纯路径;
(b) replace_extension() 取代文件的扩展名
今天就写到这里,明天继续!
- Boost中文件系统类FileSystem全面解析
- 文件系统-boost.filesystem
- boost Filesystem 文件系统
- 了解 Boost Filesystem Library文件系统
- boost::filesystem 库(文件系统)
- boost.filesystem
- Boost.Filesystem
- boost filesystem
- Boost.Filesystem
- Boost::Filesystem
- boost filesystem
- boost::filesystem
- boost中filesystem库的使用
- PHP - Manual手册 - XL. Filesystem 文件系统函数 - fgetcsv从文件指针中读入一行并解析 CSV 字段
- Linux Filesystem: 解析 Linux 中的 VFS 文件系统机制
- PHP 文件系统(PHP 5 Filesystem 函数) 全解析
- boost文件系统封装类
- 学习boost之filesystem
- WEB安全之CSRF攻击原理
- 湖南省第九届大学生计算机程序设计竞赛
- Charm Bracelet
- Circular RMQ
- 无线wifi
- Boost中文件系统类FileSystem全面解析
- Tomcat服务器的主要目录结构:
- poj 2409 Let it Bead Polya计数
- 这样0后言文塞一位优
- poj 2965 The Pilots Brothers' refrigerator
- 关于c语言的想法探究1(新手,给自己看的)
- 蝉知门户系统迁移到SAE平台-浏览目录空间
- 汉诺塔系列问题: 汉诺塔II、汉诺塔III、汉诺塔IV、汉诺塔V、汉诺塔VI、汉诺塔VII
- 【剑指offer】Q9:斐波那契数列