Standard library header <filesystem> (C++17)
From cppreference.net
이 헤더는 filesystem support 라이브러리의 일부입니다.
포함 항목 |
||
|
(C++20)
|
3방향 비교 연산자 지원 | |
클래스 |
||
|
네임스페이스
std::filesystem
에 정의됨
|
||
|
(C++17)
|
경로를 나타냄
(클래스) |
|
|
(C++17)
|
파일 시스템 오류 시 발생하는 예외
(클래스) |
|
|
(C++17)
|
디렉토리 항목
(클래스) |
|
|
(C++17)
|
디렉토리 내용에 대한 반복자
(클래스) |
|
|
(C++17)
|
디렉토리와 그 하위 디렉토리의 내용에 대한 반복자
(클래스) |
|
|
(C++17)
|
파일 유형과 권한을 나타냄
(클래스) |
|
|
(C++17)
|
파일시스템의 사용 가능 및 여유 공간에 대한 정보
(클래스) |
|
|
(C++17)
|
파일의 유형
(enum) |
|
|
(C++17)
|
파일 시스템 권한을 식별합니다
(enum) |
|
|
(C++17)
|
권한 작업의 의미를 지정합니다
(enum) |
|
|
(C++17)
|
복사 작업의 의미론을 지정합니다
(enum) |
|
|
(C++17)
|
디렉토리 내용 순회를 위한 옵션
(enum) |
|
|
(C++17)
|
파일 시간 값을 나타냄
(typedef) |
|
|
다음 네임스페이스에 정의됨
std
|
||
|
std::filesystem::path
에 대한 해시 지원
(클래스 템플릿 특수화) |
||
전방 선언 |
||
|
헤더 파일에 정의됨
<functional>
|
||
|
다음 네임스페이스에 정의됨
std
|
||
|
(C++11)
|
해시 함수 객체
(클래스 템플릿) |
|
함수 |
||
|
네임스페이스
std::filesystem
에 정의됨
|
||
|
(C++17)
(C++20에서 사용 중단됨)
|
UTF-8 인코딩된 소스로부터
path
를 생성합니다
(함수) |
|
|
(C++17)
|
절대 경로를 구성함
(함수) |
|
|
(C++17)
|
정규 경로를 구성함
(함수) |
|
|
(C++17)
|
상대 경로를 구성함
(함수) |
|
|
(C++17)
|
파일 또는 디렉토리를 복사합니다
(function) |
|
|
(C++17)
|
파일 내용 복사
(함수) |
|
|
(C++17)
|
심볼릭 링크를 복사합니다
(함수) |
|
|
(C++17)
(C++17)
|
새 디렉토리 생성
(함수) |
|
|
(C++17)
|
하드 링크를 생성함
(함수) |
|
|
(C++17)
(C++17)
|
심볼릭 링크를 생성함
(함수) |
|
|
(C++17)
|
현재 작업 디렉토리를 반환하거나 설정합니다
(function) |
|
|
(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)
|
주어진 경로가 빈 파일 또는 디렉터리를 참조하는지 확인합니다
(function) |
|
|
(C++17)
|
주어진 경로가 named pipe를 참조하는지 확인합니다
(함수) |
|
|
(C++17)
|
인수가
other
파일을 참조하는지 확인합니다
(함수) |
|
|
(C++17)
|
인수가 일반 파일을 참조하는지 확인합니다
(함수) |
|
|
(C++17)
|
인수가 명명된 IPC 소켓을 참조하는지 확인합니다
(함수) |
|
|
(C++17)
|
인수가 심볼릭 링크를 참조하는지 확인합니다
(함수) |
|
|
(C++17)
|
파일 상태가 알려져 있는지 확인합니다
(함수) |
|
시놉시스
#include <compare> namespace std::filesystem { // 경로 class path; // path 비멤버 함수 void swap(path& lhs, path& rhs) noexcept; size_t hash_value(const path& p) noexcept; // 파일시스템 오류 class filesystem_error; // 디렉토리 엔트리 class directory_entry; // 디렉터리 반복자 class directory_iterator; // 디렉터리 반복자를 위한 범위 접근 directory_iterator begin(directory_iterator iter) noexcept; directory_iterator end(directory_iterator) noexcept; // 재귀적 디렉토리 반복자 class recursive_directory_iterator; // 재귀적 디렉토리 반복자를 위한 범위 접근 recursive_directory_iterator begin(recursive_directory_iterator iter) noexcept; recursive_directory_iterator end(recursive_directory_iterator) noexcept; // 파일 상태 class file_status; struct space_info { uintmax_t capacity; uintmax_t free; uintmax_t available; friend bool operator==(const space_info&, const space_info&) = default; }; // 열거형 enum class file_type; enum class perms; enum class perm_options; enum class copy_options; enum class directory_options; using file_time_type = chrono::time_point<chrono::file_clock>; // 파일시스템 연산 path absolute(const path& p); path absolute(const path& p, error_code& ec); path canonical(const path& p); path canonical(const path& p, error_code& ec); void copy(const path& from, const path& to); void copy(const path& from, const path& to, error_code& ec); void copy(const path& from, const path& to, copy_options options); void copy(const path& from, const path& to, copy_options options, error_code& ec); bool copy_file(const path& from, const path& to); bool copy_file(const path& from, const path& to, error_code& ec); bool copy_file(const path& from, const path& to, copy_options option); bool copy_file(const path& from, const path& to, copy_options option, error_code& ec); void copy_symlink(const path& existing_symlink, const path& new_symlink); void copy_symlink(const path& existing_symlink, const path& new_symlink, error_code& ec) noexcept; bool create_directories(const path& p); bool create_directories(const path& p, error_code& ec); bool create_directory(const path& p); bool create_directory(const path& p, error_code& ec) noexcept; bool create_directory(const path& p, const path& attributes); bool create_directory(const path& p, const path& attributes, error_code& ec) noexcept; void create_directory_symlink(const path& to, const path& new_symlink); void create_directory_symlink(const path& to, const path& new_symlink, error_code& ec) noexcept; void create_hard_link(const path& to, const path& new_hard_link); void create_hard_link(const path& to, const path& new_hard_link, error_code& ec) noexcept; void create_symlink(const path& to, const path& new_symlink); void create_symlink(const path& to, const path& new_symlink, error_code& ec) noexcept; path current_path(); path current_path(error_code& ec); void current_path(const path& p); void current_path(const path& p, error_code& ec) noexcept; bool equivalent(const path& p1, const path& p2); bool equivalent(const path& p1, const path& p2, error_code& ec) noexcept; bool exists(file_status s) noexcept; bool exists(const path& p); bool exists(const path& p, error_code& ec) noexcept; uintmax_t file_size(const path& p); uintmax_t file_size(const path& p, error_code& ec) noexcept; uintmax_t hard_link_count(const path& p); uintmax_t hard_link_count(const path& p, error_code& ec) noexcept; bool is_block_file(file_status s) noexcept; bool is_block_file(const path& p); bool is_block_file(const path& p, error_code& ec) noexcept; bool is_character_file(file_status s) noexcept; bool is_character_file(const path& p); bool is_character_file(const path& p, error_code& ec) noexcept; bool is_directory(file_status s) noexcept; bool is_directory(const path& p); bool is_directory(const path& p, error_code& ec) noexcept; bool is_empty(const path& p); bool is_empty(const path& p, error_code& ec); bool is_fifo(file_status s) noexcept; bool is_fifo(const path& p); bool is_fifo(const path& p, error_code& ec) noexcept; bool is_other(file_status s) noexcept; bool is_other(const path& p); bool is_other(const path& p, error_code& ec) noexcept; bool is_regular_file(file_status s) noexcept; bool is_regular_file(const path& p); bool is_regular_file(const path& p, error_code& ec) noexcept; bool is_socket(file_status s) noexcept; bool is_socket(const path& p); bool is_socket(const path& p, error_code& ec) noexcept; bool is_symlink(file_status s) noexcept; bool is_symlink(const path& p); bool is_symlink(const path& p, error_code& ec) noexcept; file_time_type last_write_time(const path& p); file_time_type last_write_time(const path& p, error_code& ec) noexcept; void last_write_time(const path& p, file_time_type new_time); void last_write_time(const path& p, file_time_type new_time, error_code& ec) noexcept; void permissions(const path& p, perms prms, perm_options opts=perm_options::replace); void permissions(const path& p, perms prms, error_code& ec) noexcept; void permissions(const path& p, perms prms, perm_options opts, error_code& ec); path proximate(const path& p, error_code& ec); path proximate(const path& p, const path& base = current_path()); path proximate(const path& p, const path& base, error_code& ec); path read_symlink(const path& p); path read_symlink(const path& p, error_code& ec); path relative(const path& p, error_code& ec); path relative(const path& p, const path& base = current_path()); path relative(const path& p, const path& base, error_code& ec); bool remove(const path& p); bool remove(const path& p, error_code& ec) noexcept; uintmax_t remove_all(const path& p); uintmax_t remove_all(const path& p, error_code& ec); void rename(const path& from, const path& to); void rename(const path& from, const path& to, error_code& ec) noexcept; void resize_file(const path& p, uintmax_t size); void resize_file(const path& p, uintmax_t size, error_code& ec) noexcept; space_info space(const path& p); space_info space(const path& p, error_code& ec) noexcept; file_status status(const path& p); file_status status(const path& p, error_code& ec) noexcept; bool status_known(file_status s) noexcept; file_status symlink_status(const path& p); file_status symlink_status(const path& p, error_code& ec) noexcept; path temp_directory_path(); path temp_directory_path(error_code& ec); path weakly_canonical(const path& p); path weakly_canonical(const path& p, error_code& ec); } // 해시 지원 namespace std { template<class T> struct hash; template<> struct hash<filesystem::path>; } namespace std::ranges { template<> inline constexpr bool enable_borrowed_range<filesystem::directory_iterator> = true; template<> inline constexpr bool enable_borrowed_range<filesystem::recursive_directory_iterator> = true; template<> inline constexpr bool enable_view<filesystem::directory_iterator> = true; template<> inline constexpr bool enable_view<filesystem::recursive_directory_iterator> = true; }
클래스 std::filesystem::path
namespace std::filesystem { class path { public: using value_type = /* 설명 참조 */; using string_type = basic_string<value_type>; static constexpr value_type preferred_separator = /* 설명 참조 */; // 열거형 형식 enum format; // 생성자와 소멸자 path() noexcept; path(const path& p); path(path&& p) noexcept; path(string_type&& source, format fmt = auto_format); template<class Source> path(const Source& source, format fmt = auto_format); template<class InputIt> path(InputIt first, InputIt last, format fmt = auto_format); template<class Source> path(const Source& source, const locale& loc, format fmt = auto_format); template<class InputIt> path(InputIt first, InputIt last, const locale& loc, format fmt = auto_format); ~path(); // 할당 path& operator=(const path& p); path& operator=(path&& p) noexcept; path& operator=(string_type&& source); path& assign(string_type&& source); template<class Source> path& operator=(const Source& source); template<class Source> path& assign(const Source& source); template<class InputIt> path& assign(InputIt first, InputIt last); // 추가 path& operator/=(const path& p); template<class Source> path& operator/=(const Source& source); template<class Source> path& append(const Source& source); template<class InputIt> path& append(InputIt first, InputIt last); // concatenation path& operator+=(const path& x); path& operator+=(const string_type& x); path& operator+=(basic_string_view<value_type> x); path& operator+=(const value_type* x); path& operator+=(value_type x); template<class Source> path& operator+=(const Source& x); template<class ECharT> path& operator+=(ECharT x); template<class Source> path& concat(const Source& x); template<class InputIt> path& concat(InputIt first, InputIt last); // modifiers void clear() noexcept; path& make_preferred(); path& remove_filename(); path& replace_filename(const path& replacement); path& replace_extension(const path& replacement = path()); void swap(path& rhs) noexcept; // non-member operators friend bool operator==(const path& lhs, const path& rhs) noexcept; friend strong_ordering operator<=>(const path& lhs, const path& rhs) noexcept; friend path operator/ (const path& lhs, const path& rhs); // 네이티브 포맷 옵저버 const string_type& native() const noexcept; const value_type* c_str() const noexcept; operator string_type() const; template<class ECharT, class Traits = char_traits<ECharT>, class Allocator = allocator<ECharT>> basic_string<ECharT, Traits, Allocator> string(const Allocator& a = Allocator()) const; std::string string() const; std::wstring wstring() const; std::u8string u8string() const; std::u16string u16string() const; std::u32string u32string() const; // 일반적인 형식 관찰자 template<class ECharT, class Traits = char_traits<ECharT>, class Allocator = allocator<ECharT>> basic_string<ECharT, Traits, Allocator> generic_string(const Allocator& a = Allocator()) const; std::string generic_string() const; std::wstring generic_wstring() const; std::u8string generic_u8string() const; std::u16string generic_u16string() const; std::u32string generic_u32string() const; // 비교 int compare(const path& p) const noexcept; int compare(const string_type& s) const; int compare(basic_string_view<value_type> s) const; int compare(const value_type* s) const; // decomposition path root_name() const; path root_directory() const; path root_path() const; path relative_path() const; path parent_path() const; path filename() const; path stem() const; path extension() const; // query bool empty() const noexcept; bool has_root_name() const; bool has_root_directory() const; bool has_root_path() const; bool has_relative_path() const; bool has_parent_path() const; bool has_filename() const; bool has_stem() const; bool has_extension() const; bool is_absolute() const; bool is_relative() const; // 생성 path lexically_normal() const; path lexically_relative(const path& base) const; path lexically_proximate(const path& base) const; // iterators class iterator; using const_iterator = iterator; iterator begin() const; iterator end() const; // 경로 삽입기 및 추출기 template<class CharT, class Traits> friend basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const path& p); template<class CharT, class Traits> friend basic_istream<CharT, Traits>& operator>>(basic_istream<CharT, Traits>& is, path& p); }; }
클래스 std::filesystem::filesystem_error
namespace std::filesystem { class filesystem_error : public system_error { public: filesystem_error(const string& what_arg, error_code ec); filesystem_error(const string& what_arg, const path& p1, error_code ec); filesystem_error(const string& what_arg, const path& p1, const path& p2, error_code ec); const path& path1() const noexcept; const path& path2() const noexcept; const char* what() const noexcept override; }; }
클래스 std::filesystem::directory_entry
namespace std::filesystem { class directory_entry { public: // 생성자와 소멸자 directory_entry() noexcept = default; directory_entry(const directory_entry&) = default; directory_entry(directory_entry&&) noexcept = default; explicit directory_entry(const filesystem::경로& p); directory_entry(const filesystem::path& p, error_code& ec); ~directory_entry(); // assignments directory_entry& operator=(const directory_entry&) = default; directory_entry& operator=(directory_entry&&) noexcept = default; // modifiers void assign(const filesystem::path& p); void assign(const filesystem::path& p, error_code& ec); void replace_filename(const filesystem::path& p); void replace_filename(const filesystem::path& p, error_code& ec); void refresh(); void refresh(error_code& ec) noexcept; // observers const filesystem::path& path() const noexcept; operator const filesystem::path&() const noexcept; bool exists() const; bool exists(error_code& ec) const noexcept; bool is_block_file() const; bool is_block_file(error_code& ec) const noexcept; bool is_character_file() const; bool is_character_file(error_code& ec) const noexcept; bool is_directory() const; bool is_directory(error_code& ec) const noexcept; bool is_fifo() const; bool is_fifo(error_code& ec) const noexcept; bool is_other() const; bool is_other(error_code& ec) const noexcept; bool is_regular_file() const; bool is_regular_file(error_code& ec) const noexcept; bool is_socket() const; bool is_socket(error_code& ec) const noexcept; bool is_symlink() const; bool is_symlink(error_code& ec) const noexcept; uintmax_t file_size() const; uintmax_t file_size(error_code& ec) const noexcept; uintmax_t hard_link_count() const; uintmax_t hard_link_count(error_code& ec) const noexcept; file_time_type last_write_time() const; file_time_type last_write_time(error_code& ec) const noexcept; file_status status() const; file_status status(error_code& ec) const noexcept; file_status symlink_status() const; file_status symlink_status(error_code& ec) const noexcept; bool operator==(const directory_entry& rhs) const noexcept; strong_ordering operator<=>(const directory_entry& rhs) const noexcept; // inserter template<class CharT, class Traits> friend basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const directory_entry& d); private: filesystem::path pathobject; // 설명 전용 friend class directory_iterator; // 설명 전용 }; }
클래스 std::filesystem::directory_iterator
namespace std::filesystem { class directory_iterator { public: using iterator_category = input_iterator_tag; using value_type = directory_entry; using difference_type = ptrdiff_t; using pointer = const directory_entry*; using reference = const directory_entry&; // 멤버 함수 directory_iterator() noexcept; explicit directory_iterator(const path& p); directory_iterator(const path& p, directory_options options); directory_iterator(const path& p, error_code& ec); directory_iterator(const path& p, directory_options options, error_code& ec); directory_iterator(const directory_iterator& rhs); directory_iterator(directory_iterator&& rhs) noexcept; ~directory_iterator(); directory_iterator& operator=(const directory_iterator& rhs); directory_iterator& operator=(directory_iterator&& rhs) noexcept; const directory_entry& operator*() const; const directory_entry* operator->() const; directory_iterator& operator++(); directory_iterator& increment(error_code& ec); bool operator==(default_sentinel_t) const noexcept { return *this == directory_iterator(); } // 입력 반복자에 필요한 다른 멤버들 }; }
클래스 std::filesystem::recursive_directory_iterator
namespace std::filesystem { class recursive_directory_iterator { public: using iterator_category = input_iterator_tag; using value_type = directory_entry; using difference_type = ptrdiff_t; using pointer = const directory_entry*; using reference = const directory_entry&; // 생성자 및 소멸자 recursive_directory_iterator() noexcept; explicit recursive_directory_iterator(const path& p); recursive_directory_iterator(const path& p, directory_options options); recursive_directory_iterator(const path& p, directory_options options, error_code& ec); recursive_directory_iterator(const path& p, error_code& ec); recursive_directory_iterator(const recursive_directory_iterator& rhs); recursive_directory_iterator(recursive_directory_iterator&& rhs) noexcept; ~recursive_directory_iterator(); // 관찰자 directory_options options() const; int depth() const; bool recursion_pending() const; const directory_entry& operator*() const; const directory_entry* operator->() const; // 수정자 recursive_directory_iterator& operator=(const recursive_directory_iterator& rhs); recursive_directory_iterator& operator=(recursive_directory_iterator&& rhs) noexcept; recursive_directory_iterator& operator++(); recursive_directory_iterator& increment(error_code& ec); void pop(); void pop(error_code& ec); void disable_recursion_pending(); bool operator==(default_sentinel_t) const noexcept { return *this == recursive_directory_iterator(); } // 입력 반복자에 필요한 기타 멤버들 }; }
클래스 std::filesystem::file_status
namespace std::filesystem { class file_status { public: // 생성자 및 소멸자 file_status() noexcept : file_status(file_type::none) {} explicit file_status(file_type ft, perms prms = perms::unknown) noexcept; file_status(const file_status&) noexcept = default; file_status(file_status&&) noexcept = default; ~file_status(); // 대입 연산자 file_status& operator=(const file_status&) noexcept = default; file_status& operator=(file_status&&) noexcept = default; // 수정자 void type(file_type ft) noexcept; void permissions(perms prms) noexcept; // 접근자 file_type type() const noexcept; perms permissions() const noexcept; friend bool operator==(const file_status& lhs, const file_status& rhs) noexcept { return lhs.type() == rhs.type() && lhs.permissions() == rhs.permissions(); } }; }