菜鸟笔记
提升您的技术认知

boost::filesystem常用用法详解-ag真人游戏

提示:

  • filesystem库提供了两个头文件,一个是,这个头文件包含主要的库内容。它提供了对文件系统的重要操作。同时它定义了一个类path,正如大家所想的,这个是一个可移植的路径表示方法,它是filesystem库的基础。
  • 一个是,是对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::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  
}
网站地图