C 使用BOOST操作檔案 目錄

2021-08-28 21:22:10 字數 1942 閱讀 2634

在boost庫出現之前,c++對於檔案和目錄的操作,大都借助於unix提供的底層檔案和目錄介面。boost中filesystem庫可以跨平台操作目錄、檔案等,在不失效能的情況下,提供了友好的操作方法。

#include
編譯時,需要鏈結

-lboost_filesystem
當安裝路徑不是unix環境變數中設定的標準路徑的話,編譯時還需加上boost庫標頭檔案和動態路路徑,即:

-i $(boost)/include/

-l $(boost)/lib/

變數$(boost)是boost庫實際安裝路徑。

路徑(path類)和迭代器–filesystem操作的基礎

path類提供了路徑操作的豐富介面,可以獲得檔名、拓展名、檔案屬性等。迭代器提供了遍歷整個目錄所有檔案的功能,常用的filesystem庫的迭代器是:directory_iterator和recursive_directory_iterator,後者相對於前者提供了遞迴遍歷的功能。

1).cur目錄下結構如下

cur/

—build.sh

—src/

——main.cpp

——makefile

2).進入/home/test/cur目錄,執行build.sh編譯程式後,留在當前目錄執行可執行檔案

3).假設首先掃瞄到的檔案是 build.sh

string curpath = 「/home/test/cur/」 ;

//定義乙個可以遞迴的目錄迭代器,用於遍歷

boost::filesystem::recursive_directory_iterator itend;

for(boost::filesystem::recursive_directory_iterator itor( curpath.c_str() ); itor != itend ;++itor)

//判斷檔案的狀態資訊

if(boost::filesystem::is_regular_file(file))

//更改拓展名

boost::filesystem::path tmppath = filepath;

//假設遍歷到了cpp檔案,想看下對應的.o檔案是否存在

tmppath.replace_extension(".o");

//判斷檔案是否存在

if( boost::filesystem::exists( tmppath.string() ) )

//刪除檔案

//remove只能刪除普通檔案,而不能刪除目錄

boost::filesystem::remove(tmppath.string());

//remove_all則提供了遞迴刪除的功能,可以刪除目錄

boost::filesystem::remove_all(tmppath.string());

//移動檔案 & 拷貝檔案

//srcpath原路徑,srcpath的型別為string

//destpath目標路徑,destpath的型別為string

boost::filesystem::rename(srcpath , destpath);

boost::filesystem::copy_file(srcpath , destpath);

//拷貝目錄

boost::filesystem::copy_files("/home/test","/dev/shm")

}boost::filesystem還可以建立目錄:

if( !boost::filesystem::exists( strfilepath ) )

boost::filesystem提供的操作當然不只如此。使用boost::filesystem操作時加上異常捕獲,也能夠增加**的魯棒性,在此不進行累述。

boost 檔案 目錄操作

filesystem庫是檔案系統操作庫,可以使用其中的basic path類用來操作目錄 檔案,使用需要包含編譯好的system庫和filesystem庫,我們一般不直接使用basic path,而是使用typedef path和wpath。使用它需要包含 boost filesystem.hpp ...

Linux 操作檔案目錄

命令 說明語法 引數引數說明 ls顯示檔案和目錄列表 ls alrtafr name.l列出檔案的詳細資訊 a列出當前目錄所有檔案,包含隱藏檔案 mkdir 建立目錄 mkdir p dirname p父目錄不存在情況下先生成父目錄 cd切換目錄 cd dirname touch 生成乙個空檔案 e...

26 操作檔案目錄

操作檔案和目錄的函式一部分在os模組中,一部分在os.path模組中。檢視 建立和刪除目錄 檢視當前目錄的絕對路徑 os.path.abspath users michael 在某個目錄下建立乙個新目錄,首先把新目錄的完整路徑表示出來 os.path.join users michael testd...