<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    Boost::filesystem 使用小筆記

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    今天拿起手要用C++寫個小工具,從指定的目錄遞歸遍歷文件,然后做一下處理。又翻了一下boost的filesystem庫。小結一下,希望能加深印象,免得下次又要查看文檔。

    1. path對象就是一個跨平臺的路徑對象。有許多方法訪問路徑的各個部分,也用它的iterator迭代路徑中的各個部分; 
         path構造目錄結構的時候使用“/”運算符,非常直觀。 
         比如path p1; 
         path p2 = p1/"something"; p1 /= "xxx.xxx"; 

    2. filesystem名字空間一下有一些全局的函數,比如exists可以判斷path是不是存在,is_directory函數判斷是不是目錄,file_size獲得大小--該大小是一個夸平臺的類型,可以表示32位或者64的大小; 
         其他is方法還有: 
         is_empty 
         is_other 
         is_regular_file 
         is_symlink 

    3. 最方便的一個功能是遍歷path里的所有內容。directory_iterator。

         path p; 
         directory_iterator(p)就是迭代器的起點,無參數的directory_iterator()就是迭代器的終點。 

    還可以遞歸迭代,把上面的directory_iterator換成recursive_directory_iterator即可。 

    4. 創建目錄。這里特別要提到一個方法是bool create_directories(const path& p);  如果p是一個目錄(也就是is_diretory返回true)。它會遞歸的創建整個目錄結構,免去自己一個一個創建的煩惱了。 

         其他創建方法還有: 

         create_directories 
         create_directory 
         create_hard_link 
         create_symlink 

    5. 還可以復制目錄  
         copy_directory 
         copy_file 

        copy_symlink


    注意:復制文件的方法copy_file方法在Xcode使用LLVM庫的情況下連接的時候會報錯,沒有找到符號。可以直接用copy方法,該方法自己判斷各種情況自動調用對應的方法(比如符號連接,目錄,或者普通文件)。

    6. 刪除remove 遞歸刪除remove_all

    7. 改名字rename

    8. 如果包含了<boost/filesystem/fstream.hpp>的話,還可以讓fstream接受path作為參數。

    BTW,使用filesystem需要編譯boost,現在版本只要執行一個腳本就能編譯完成了,比以前方便多了。 
    不過,還是要提一下Xcode環境下使用的話,要選擇GCC C++ standard library。 

    RFID設備管理軟件

    RFID設備管理軟件

    GCC的哭雖然沒有LLVM 的庫先進(我是說支持C++11方面),不過,大部分的C++11標準還是支持的。

    目前發現是GCC的庫沒有std::regex。不過,既然用boost的話那就用boost的regex好了。反正std的也是從boost拿過來而已。

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全