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

提示:

  • filesystem库提供了两个头文件,一个是<boost/filesystem.hpp>,这个头文件包括基本的库内容。它提供了对文件系统的重要操作。

    同一时候它定义了一个类path。正如大家所想的。这个是一个可移植的路径表示方法,它是filesystem库的基础。

  • 一个是<boost/filesystem/fstream.hpp>。是对std::fstream的一个补充,使用能够使用类boost::path作为參数。从而使得filesystem库与标准库的关系更亲热。
  • 由于文件系统对于大多数系统来说都是共享的,所以不同的进程能够同一时候操作同一个对象,因此filesysetm不提供这方面的特性保证。

    当然这样的保证也是不可能的。或者至少昂贵的。

  • filesystem在不论什么时候,仅仅要不能完毕对应的任务。它都可能抛出 basic_filesystem_error异常。当然并不是总会抛出异常。由于在库编译的时候能够关闭这个功能。同一时候有两个函数提供了无异常版本号。这是由于在任务不能完毕时并不是是异常。
  • filesystem库的全部内容定义在boost名字空间的一个下级名字空间里,它叫boost::filesytem。在使用boost.filesytem之后,链接时须要加“-lboost_filesystem-mt”选项,由于这个须要额外的链接,并不是一个纯头文件的库。

  • 本文中所用boost库为1_54
#include<boost/filesystem.hpp> 

{
	boost::filesystem::path path("/test/test1");   //初始化
	boost::filesystem::path old_cpath = boost::filesystem::current_path(); //取得当前程序所在文件夹
	boost::filesystem::path parent_path = old_cpath.parent_path();//取old_cpath的上一层父文件夹路径
	boost::filesystem::path file_path = old_cpath / "file"; //path支持重载/运算符
	if(boost::filesystem::exists(file_path))  //推断文件存在性
	{
		std::string strPath = file_path.string();
		int x = 1;
	}
	else
	{
		//文件夹不存在;
		boost::filesystem::create_directory(file_path);  //文件夹不存在。创建
	}
	bool bIsDirectory = boost::filesystem::is_directory(file_path); //推断file_path是否为文件夹
	boost::filesystem::recursive_directory_iterator beg_iter(file_path);
	boost::filesystem::recursive_directory_iterator end_iter;
	for (; beg_iter != end_iter; ++beg_iter)
	{
		if (boost::filesystem::is_directory(*beg_iter))
		{
			continue;
		}
		else
		{
			std::string strPath = beg_iter->path().string();  //遍历出来的文件名称
			int x=1;
		}
	}
	boost::filesystem::path new_file_path = file_path / "test.txt";
	if(boost::filesystem::is_regular_file(new_file_path))	//推断是否为普通文件
	{
		UINT sizefile = boost::filesystem::file_size(new_file_path);  //文件大小(字节)
		int x =1;
	}
	boost::filesystem::remove(new_file_path);//删除文件new_file_path
}
时间: 2024-07-28 16:17:56

boost::filesystem经常使用使用方法具体解释的相关文章

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

原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLTXvXJlIqeavUo1Ak%3D&b=6 如果要在 C++ 裡對特定的檔案做存取,其實透過 STL 的 fstream(參考)來做,一般是不會有什麼問題的:相對的,問題比較大的部分,可能會是在於對於資料夾(folder.directory)的處理,以及對於路徑的操作上.像是以路徑來說,Windo

boost::filesystem常用用法详解

提示: filesystem库提供了两个头文件,一个是<boost/filesystem.hpp>,这个头文件包含主要的库内容.它提供了对文件系统的重要操作.同时它定义了一个类path,正如大家所想的,这个是一个可移植的路径表示方法,它是filesystem库的基础. 一个是<boost/filesystem/fstream.hpp>,是对std::fstream的一个补充,使用可以使用类boost::path作为参数,从而使得filesystem库与标准库的关系更亲密. 由于文件

Boost::filesystem 使用小笔记

今天拿起手要用C++写个小工具,从指定的目录递归遍历文件,然后做一下处理.又翻了一下boost的filesystem库.小结一下,希望能加深印象,免得下次又要查看文档. 1. path对象就是一个跨平台的路径对象.有许多方法访问路径的各个部分,也用它的iterator迭代路径中的各个部分:      path构造目录结构的时候使用“/”运算符,非常直观.      比如path p1;      path p2 = p1/"something"; p1 /= "xxx.xxx

boost::filesystem库使用入门

以下知识点转自:点击打开原文链接 今天拿起手要用C++写个小工具,从指定的目录递归遍历文件,然后做一下处理.又翻了一下boost的filesystem库.小结一下,希望能加深印象,免得下次又要查看文档. 1. path对象就是一个跨平台的路径对象.有许多方法访问路径的各个部分,也用它的iterator迭代路径中的各个部分: path构造目录结构的时候使用"/"运算符,非常直观. 比如path p1; path p2 = p1/"something"; p1 /= &

Js apply 方法 具体解释

Js apply方法具体解释 我在一開始看到javascript的函数apply和call时,很的模糊,看也看不懂,近期在网上看到一些文章对apply方法和call的一些演示样例,总算是看的有点眉目了,在这里我做例如以下笔记,希望和大家分享..  如有什么不正确的或者说法不明白的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        apply和call的差别在哪里 2.        什么情况下用apply,什么情况下用call 3.        ap

JS中setTimeout()的使用方法具体解释

1. SetTimeOut()              1.1 SetTimeOut()语法样例              1.2 用SetTimeOut()运行Function              1.3 SetTimeOut()语法样例              1.4 设定条件使SetTimeOut()停止              1.5 计分及秒的counter    2. ClearTimeout()    3.  Set Flag   10.1 setTimeout( )

Android源代码下载方法具体解释

作者:张星 相信非常多下载过内核的人都对这个非常熟悉 git clone git://android.git.kernel.org/kernel/common.git kernel 可是这是在曾经,如今假设这么运行的话,会显演示样例如以下内容 Initialized empty Git repository in /home/star/working/kernel/.git/ android.git.kernel.org[0: 149.20.4.77]: errno=Connection ref

const 使用方法具体解释

const使用方法具体解释 面向对象是C++的重要特性. 可是c++在c的基础上新添加的几点优化也是非常耀眼的 就const直接能够代替c中的#define 下面几点非常重要,学不好后果也也非常严重 const 1. 限定符声明变量仅仅能被读 const int i=5; int j=0; ... i=j;   //非法.导致编译错误 j=i;   //合法 2. 必须初始化 const int i=5;    //合法 const int j;      //非法.导致编译错误 3. 在还有一

hive-0.11.0安装方法具体解释

先决条件: 1)java环境,须要安装java1.6以上版本号 2)hadoop环境,Hadoop-1.2.1的安装方法參考hadoop-1.2.1安装方法具体解释 本文採用的hadoop是hadoop-1.2.1.hive採用的是hive-0.11.0 hive有三种安装模式: 内嵌模式:元数据保持在内嵌的Derby模式.仅仅同意一个会话连接 本地独立模式:在本地安装Mysql,把元数据放到Mysql内 远程模式:元数据放置在远程的Mysql数据库 内嵌模式安装: 1.上传并解压hive-0.