boost::filesystem總結


       boost::filesystem是Boost C++ Libraries中的一個模塊,主要作用是處理文件(Files)和目錄(Directories)。該模塊提供的類boost::filesystem::path專門用來處理路徑。而且,該模塊中還有很多獨立的函數能夠用來執行創建目錄、檢查文件是否存在等任務。


一、創建Paths

        定義路徑時需要包含頭文件boost/filesystem.hpp,並且使用命名空間boost::filesystem;

        路徑的創建很簡單,僅僅需要向類boost::filesystem::path()的構造器傳遞一個string;

        構造器的輸入可以是一個沒有意義的字符串,因為構造器不會去檢測該路徑是否是合法路徑及是否存在;

        path對象是一個跨平台的路徑對象。

        path對象的屬性有下列這些:

               1) path.string()          輸出字符串形式的路徑

               2) path.stem()           文件名,不帶擴展名

               3) path.extension()   返回文件擴展名

               更詳細的內容見這里


二、文件和目錄

        該部分包括下列函數:
         boost::filesystem::status(path)                                       查詢文件或目錄的狀態,返回的是boost::filesystem::file_status類型的對象

        boost::filesystem::is_directory()                                    根據獲取的狀態判斷是否是目錄,返回bool

        boost::filesystem::is_empty()                                        判斷是否為空

        boost::filesystem::is_regular_file()                                 根據獲取的狀態判斷是否是普通文件,返回bool

        boost::filesystem::is_symlink()                                      判斷符號連接(在windows系統中,后綴為lnk的文件為連接文件)

        boost::filesystem::exists()                                              判斷是否存在


         boost::filesystem::file_size()                                          返回文件的size,按bytes計算

        boost::filesystem::last_write_time()                               返回文件最后一次修改的時間

        boost::filesystem::space()                                              返回磁盤的總空間和剩余空間,


        boost::filesystem::create_directory()                             創建目錄

        boost::filesystem::create_directories()                           遞歸創建整個目錄結構

        boost::filesystem::remove()                                           刪除目錄

        boost::filesystem::remove_all()                                     遞歸刪除整個目錄結構

        boost::filesystem::rename()                                           重命名目錄

        boost::filesystem::copy_file()                                         復制文件

        boost::filesystem::copy_directory()                               復制目錄


         boost::filesystem::absolute()                                           獲取文件或目錄的絕對路徑

        boost::filesystem::current_path()                                   如果沒有參數傳入,則返回當前工作目錄;否則,則將傳入的目錄設為當前工作目錄


三、目錄迭代(Directory Iterators)

        boost::filesystem::directory_iterator()                            迭代目錄下的所有文件

        boost::filesystem::recursive_directory_iterator()            遞歸地遍歷一個目錄和子目錄,也就是迭代整個目錄結構下的所有文件


四、文件流(File Streams)

        頭文件<fstream>定義的文件流不能將boost::filesystem::path定義的目錄作為參數。如果非要使用path對象打開文件流的話,那就添加頭文件<boost/filesystem/fstream.hpp>,如下:

#include <boost/filesystem/fstream.hpp>

#include <iostream>

using namespace boost::filesystem;

int main()

{

        path p{"test.txt"};

        ofstream ofs{p};

        ofs << "Hello, world!\n";

}



參考文獻:

      1> Boost::filesystem 使用小筆記

      2> The Boost C++ Libraries

      3> Boost.Filesystem


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM