命名空間
變體
動作

Filesystem 程式庫 (自 C++17)

出自 cppreference.com
< cpp
 
 
 

Filesystem 程式庫提供了對檔案系統及其組件(例如路徑、常規檔案和目錄)執行操作的功能。

filesystem 程式庫最初開發為 boost.filesystem,作為 ISO/IEC TS 18822:2015 技術規範發布,並最終在 C++17 中合併至 ISO C++。目前,Boost 的實作在比 C++17 程式庫更多的編譯器和平台上可用。

如果實作無法存取階層式檔案系統,或該系統未提供必要功能,則 filesystem 程式庫的功能可能無法使用。若底層檔案系統不支援某些特性(例如 FAT 檔案系統缺少符號連結且禁止多重硬連結),則這些特性可能無法使用。在這些情況下,必須報告錯誤。

如果呼叫此程式庫中的函式導致「檔案系統競爭」(file system race),即多個執行緒、處理序或電腦對檔案系統中的同一物件交錯存取與修改,則其行為是未定義的

目錄

[編輯] 程式庫範圍定義

  • 檔案 (file):一種持有資料、可寫入、可讀取或兩者皆可的檔案系統物件。檔案具有名稱和屬性,其中之一是檔案類型。
  • 目錄 (directory):作為目錄條目容器的檔案,這些條目識別其他檔案(其中一些可能是其他巢狀目錄)。討論特定檔案時,它作為條目出現的目錄即為其父目錄 (parent directory)。父目錄可以用相對路徑名 ".." 表示。
  • 常規檔案 (regular file):將名稱與現有檔案關聯的目錄條目(即硬連結)。如果支援多重硬連結,則在移除最後一個硬連結後,檔案才會被刪除。
  • 符號連結 (symbolic link):將名稱與路徑關聯的目錄條目,該路徑可能存在,也可能不存在。
  • 其他特殊檔案類型:區塊 (block)字元 (character)FIFO (具名管線)socket (通訊端)
  • 檔案名稱 (file name):命名檔案的字串。允許的字元、大小寫敏感度、最大長度以及不允許的名稱均由實作定義。名稱 "."(點)和 ".."(點點)在程式庫層級具有特殊含義。
  • 路徑 (path):識別檔案的元素序列。它以可選的 root-name 開頭(例如 Windows 上的 "C:""//server"),後接可選的 root-directory(例如 Unix 上的 "/"),再後接零個或多個檔案名稱序列(除最後一個外,其餘必須為目錄或目錄連結)。路徑字串表示法(路徑名)的本機格式(例如使用哪些字元作為分隔符)和字元編碼由實作定義,此程式庫提供了可移植的路徑表示法。
  • 絕對路徑 (absolute path):明確識別檔案位置的路徑。
  • 標準路徑 (canonical path):一種不包含符號連結、"."".." 元素的絕對路徑。
  • 相對路徑 (relative path):識別檔案相對於檔案系統中某個位置的路徑。特殊路徑名稱 "."(點,「目前目錄」)和 ".."(點點,「父目錄」)都是相對路徑。

類別

定義於標頭檔 <filesystem>
定義於命名空間 std::filesystem
(C++17)
表示路徑
(類別) [編輯]
在檔案系統錯誤時拋出的異常
(類別) [編輯]
目錄條目
(類別) [編輯]
目錄內容的迭代器
(類別) [編輯]
目錄及其子目錄內容的迭代器
(類別) [編輯]
表示檔案類型與權限
(類別) [編輯]
關於檔案系統可用與閒置空間的資訊
(類別) [編輯]
(C++17)
檔案類型
(列舉) [編輯]
(C++17)
識別檔案系統權限
(列舉) [編輯]
指定權限操作的語義
(列舉) [編輯]
指定複製操作的語義
(列舉) [編輯]
用於迭代目錄內容的選項
(列舉) [編輯]
表示檔案時間值
(型別定義) [編輯]

非成員函式

定義於標頭檔 <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)
檢查給定路徑是否指向具名管線 (FIFO)
(函式) [編輯]
(C++17)
檢查參數是否指向其他檔案類型
(函式) [編輯]
檢查參數是否指向常規檔案
(函式) [編輯]
(C++17)
檢查參數是否指向具名 IPC socket
(函式) [編輯]
檢查參數是否指向符號連結
(函式) [編輯]
檢查檔案狀態是否已知
(函式) [編輯]

[編輯] 附註

使用此程式庫可能需要額外的編譯器/連結器選項。9.1 版之前的 GNU 實作需要連結 -lstdc++fs,而 9.0 版之前的 LLVM 實作需要連結 -lc++fs

功能測試巨集 數值 標準 功能
__cpp_lib_filesystem 201703L (C++17) 檔案系統函式庫

[編輯] 參閱

C++ 文件 關於 檔案系統 TS
English Deutsch 日本語 中文(简体) 中文(繁體)