boost::filesystem常用使用方法具體解釋

提示:

  • filesystem庫提供了兩個頭文件,一個是<boost/filesystem.hpp>,這個頭文件包括基本的庫內容。它提供了對文件系統的重要操做。

    同一時候它定義了一個類path。正如你們所想的。這個是一個可移植的路徑表示方法,它是filesystem庫的基礎。函數

  • 一個是<boost/filesystem/fstream.hpp>。是對std::fstream的一個補充,使用可以使用類boost::path做爲參數。從而使得filesystem庫與標準庫的關係更親熱。
  • 因爲文件系統對於大多數系統來講都是共享的,因此不一樣的進程可以同一時候操做同一個對象,所以filesysetm不提供這方面的特性保證。

    固然這樣的保證也是不可能的。或者至少昂貴的。post

  • 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  
}
相關文章
相關標籤/搜索