檔案系統庫 (C++17 起)
來自 cppreference.com
< cpp
檔案系統庫提供對檔案系統及其元件(例如路徑、常規檔案和目錄)執行操作的功能。
檔案系統庫最初是作為 boost.filesystem 開發的,作為 技術規範 ISO/IEC TS 18822:2015 釋出,並最終於 C++17 合併到 ISO C++。Boost 實現目前在比 C++17 庫更多的編譯器和平臺上可用。
如果實現無法訪問分層檔案系統,或者它不提供必要的功能,則檔案系統庫功能可能不可用。如果底層檔案系統不支援某些功能(例如,FAT 檔案系統缺少符號連結並禁止多個硬連結),則這些功能可能不可用。在這些情況下,必須報告錯誤。
如果對該庫中函式的呼叫引入了“檔案系統競爭”,即當多個執行緒、程序或計算機交錯訪問和修改檔案系統中的同一物件時,則行為是未定義的。
目錄 |
[編輯] 庫範圍定義
- 檔案:一個檔案系統物件,它包含資料,可以寫入、讀取或兩者兼有。檔案有名稱、屬性,其中一個屬性是檔案型別。
- 目錄:一個檔案,充當目錄條目的容器,這些條目標識其他檔案(其中一些可能是其他巢狀目錄)。討論特定檔案時,它作為條目出現的目錄是它的父目錄。父目錄可以用相對路徑名 ".." 表示。
- 常規檔案:一個將名稱與現有檔案關聯的目錄條目(即硬連結)。如果支援多個硬連結,則在刪除最後一個硬連結後刪除該檔案。
- 符號連結:一個將名稱與路徑關聯的目錄條目,該路徑可能存在也可能不存在。
- 其他特殊檔案型別:塊、字元、FIFO、套接字。
- 檔名:一個命名檔案的字串。允許的字元、大小寫敏感性、最大長度以及不允許的名稱是實現定義的。名稱 "."(點)和 ".."(點點)在庫級別具有特殊含義。
- 路徑:標識檔案的一系列元素。它以可選的 root-name(例如 Windows 上的 "C:" 或 "//server")開頭,後跟可選的 root-directory(例如 Unix 上的 "/"),再後跟零個或多個檔名的序列(除了最後一個檔名,所有檔名都必須是目錄或指向目錄的連結)。路徑的字串表示(路徑名)的本地格式(例如用作分隔符的字元)和字元編碼是實現定義的,此庫提供路徑的可移植表示。
- 絕對路徑:明確標識檔案位置的路徑。
- 規範路徑:不包含符號連結、"." 或 ".." 元素的絕對路徑。
- 相對路徑:相對於檔案系統上某個位置標識檔案位置的路徑。特殊路徑名 "."(點,“當前目錄”)和 ".."(點點,“父目錄”)是相對路徑。
類 | |
定義於標頭檔案
<filesystem> | |
定義於名稱空間
std::filesystem | |
(C++17) |
表示一個路徑 (類) |
(C++17) |
檔案系統錯誤時丟擲的異常 (類) |
(C++17) |
目錄項 (類) |
(C++17) |
指向目錄內容的迭代器 (類) |
(C++17) |
指向目錄及其子目錄內容的迭代器 (類) |
(C++17) |
表示檔案型別和許可權 (類) |
(C++17) |
關於檔案系統空閒和可用空間的資訊 (類) |
(C++17) |
檔案型別 (列舉) |
(C++17) |
標識檔案系統許可權 (列舉) |
(C++17) |
指定許可權操作的語義 (列舉) |
(C++17) |
指定複製操作的語義 (列舉) |
(C++17) |
迭代目錄內容的選項 (列舉) |
(C++17) |
表示檔案時間值 (typedef) |
非成員函式 | |
定義於標頭檔案
<filesystem> | |
定義於名稱空間
std::filesystem | |
(C++17) |
組成一個絕對路徑 (函式) |
(C++17) |
組成一個規範路徑 (函式) |
(C++17) |
組成一個相對路徑 (函式) |
(C++17) |
複製檔案或目錄 (函式) |
(C++17) |
複製檔案內容 (函式) |
(C++17) |
複製一個符號連結 (函式) |
(C++17)(C++17) |
建立新目錄 (函式) |
(C++17) |
建立硬連結 (函式) |
(C++17)(C++17) |
建立符號連結 (函式) |
(C++17) |
返回或設定當前工作目錄 (函式) |
(C++17) |
檢查路徑是否引用現有檔案系統物件 (函式) |
(C++17) |
檢查兩個路徑是否引用相同的檔案系統物件 (函式) |
(C++17) |
返回檔案大小 (函式) |
(C++17) |
返回引用特定檔案的硬連結數量 (函式) |
(C++17) |
獲取或設定最後資料修改時間 (函式) |
(C++17) |
修改檔案訪問許可權 (函式) |
(C++17) |
獲取符號連結的目標 (函式) |
(C++17)(C++17) |
刪除檔案或空目錄 刪除檔案或目錄及其所有內容,遞迴進行 (函式) |
(C++17) |
移動或重新命名檔案或目錄 (函式) |
(C++17) |
透過截斷或零填充更改常規檔案的大小 (函式) |
(C++17) |
確定檔案系統上可用的空閒空間 (函式) |
(C++17)(C++17) |
確定檔案屬性 確定檔案屬性,檢查符號連結目標 (函式) |
(C++17) |
返回適合臨時檔案的目錄 (函式) |
檔案型別 | |
(C++17) |
檢查給定路徑是否引用塊裝置 (函式) |
(C++17) |
檢查給定路徑是否引用字元裝置 (函式) |
(C++17) |
檢查給定路徑是否引用目錄 (函式) |
(C++17) |
檢查給定路徑是否引用空檔案或目錄 (函式) |
(C++17) |
檢查給定路徑是否引用命名管道 (函式) |
(C++17) |
檢查引數是否引用“其他”檔案 (函式) |
(C++17) |
檢查引數是否引用常規檔案 (函式) |
(C++17) |
檢查引數是否引用命名 IPC 套接字 (函式) |
(C++17) |
檢查引數是否引用符號連結 (函式) |
(C++17) |
檢查檔案狀態是否已知 (函式) |
[編輯] 注意
使用此庫可能需要額外的編譯器/連結器選項。9.1 之前的 GNU 實現需要連結 -lstdc++fs
,LLVM 9.0 之前的 LLVM 實現需要連結 -lc++fs
。
特性測試宏 | 值 | 標準 | 特性 |
---|---|---|---|
__cpp_lib_filesystem |
201703L |
(C++17) | 檔案系統庫 |
[編輯] 另請參見
C++ 文件 用於 File System TS
|