filesystem
경로, 파일 및 디렉터리에 대한 정보를 조작하고 검색하는 클래스 및 함수에 액세스하기 위한 헤더 <filesystem>
를 포함합니다.
구문
#include <filesystem> // C++17 standard header file name
#include <experimental/filesystem> // Header file for pre-standard implementation
using namespace std::experimental::filesystem::v1;
Important
Visual Studio 2017 <filesystem>
릴리스에서 헤더는 아직 C++ 표준이 아니었습니다. Visual Studio 2017 RTW의 C++는 ISO/IEC JTC 1/SC 22/WG 21 N4100에 있는 최종 초안 표준을 구현합니다. Visual Studio 2017 버전 15.7 이상에서는 새 C++17 <filesystem>
표준을 지원합니다.
이전 std::experimental
버전과 호환되지 않는 완전히 새로운 구현입니다. symlink 지원, 버그 수정 및 표준 필수 동작의 변경에 의해 필요했습니다. Visual Studio 2019 버전 16.3 이상 <filesystem>
에서는 새 std::filesystem
버전만 제공합니다. 포함 <experimental/filesystem>
은 이전 experimental 구현만 제공합니다. 구현은 experimental 라이브러리의 다음 ABI 호환성 릴리스에서 제거됩니다.
이 헤더는 호스트 운영 체제의 두 가지 광범위한 클래스 중 하나인 Microsoft Windows 및 POSIX에 대한 파일 시스템을 지원합니다.
대부분의 기능이 두 운영 체제에서 공통되지만 이 문서에서는 차이가 있는 위치를 식별합니다. 예시:
Windows는 여러 루트 이름(예:
c:
또는\\network_name
.)을 지원합니다. 파일 시스템은 상대 경로 이름(절대 경로 이름이 아닌 이름)을 완료하기 위해 각각 자체 루트 디렉터리(예:c:\
또는\\network_name\
) 및 자체 현재 디렉터리가 있는 트리 포리스트로 구성됩니다.POSIX는 루트 이름, 단일 루트 디렉터리 및 단일 현재 디렉터리가
/
없는 단일 트리를 지원합니다.
또 다른 중요한 차이점은 경로 이름의 기본 표시입니다.
Windows는 UTF-16(각 문자에 대해 하나 이상의 요소)으로 인코딩된 null로 끝나는 시퀀스를
wchar_t
사용합니다.POSIX는 UTF-8로 인코딩된 null로 끝나는 시퀀스
char
(각 문자에 대해 하나 이상의 요소)를 사용합니다.클래스
path
의 개체는 경로 이름을 네이티브 형식으로 저장하지만 이 저장된 양식과 여러 외부 양식 간에 쉽게 변환할 수 있습니다.운영 체제에서 선호하는 대로 인코딩된 null로 끝나는 시퀀스
char
입니다.UTF-8로 인코딩된 null로 끝나는 시퀀스
char
입니다.운영 체제에서 선호하는 대로 인코딩된 null로 끝나는 시퀀스
wchar_t
입니다.UTF-16으로 인코딩된 null로 끝나는 시퀀스
char16_t
입니다.UTF-32로 인코딩된 null로 끝나는 시퀀스
char32_t
입니다.
이러한 표시 간의 상호 변환은 하나 이상의
codecvt
패싯을 사용하여 필요에 따라 조정됩니다. 특정 로캘 개체를 지정하지 않으면 전역 로캘에서 이러한 패싯을 가져옵니다.
또 다른 차이점은 각 운영 체제에서 파일 또는 디렉터리 액세스 권한을 지정할 수 있는 세부 정보입니다.
Windows는 파일이 읽기 전용인지 쓰기 가능한지, 디렉터리에 아무런 의미가 없는 특성을 기록합니다.
POSIX는 파일을 읽거나 쓰거나 실행할 수 있는지 여부를 기록합니다(디렉터리인 경우 검사). 또한 각 작업이 소유자, 소유자 그룹 또는 모든 사용자에 대해 허용되는지 여부와 몇 가지 다른 사용 권한도 허용됩니다.
두 시스템에 공통되는 점은 루트 이름을 통과할 경우 경로 이름에 적용되는 구조입니다. 경로 이름 c:/abc/xyz/def.ext
:
루트 이름은 .입니다
c:
.루트 디렉터리가 .입니다
/
.루트 경로는 .입니다
c:/
.상대 경로는 .입니다
abc/xyz/def.ext
.부모 경로는 .입니다
c:/abc/xyz
.파일 이름은 .입니다
def.ext
.줄기는
def
.확장은 .입니다
.ext
.
사소한 차이점은 경로 이름에 있는 디렉터리 시퀀스 간의 기본 설정 구분 기호입니다. 두 운영 체제 모두 슬래시 /
를 작성할 수 있지만 일부 컨텍스트에서는 Windows에서 백슬래시를 \
선호합니다. 구현에서는 기본 설정 구분 기호를 데이터 멤버 preferred_separator
에 저장합니다 path
.
마지막으로, path
개체에는 중요한 기능이 있습니다. 헤더 <fstream>
에 정의된 클래스에 파일 이름 인수가 필요한 모든 위치에서 개체를 사용할 수 있습니다.
자세한 내용 및 코드 예제는 파일 시스템 탐색(C++)을 참조하세요.
멤버
클래스
이름 | 설명 |
---|---|
directory_entry 클래스 |
a 또는 recursive_directory_iterator a directory_iterator 에서 반환되고 을 포함하는 개체에 path 대해 설명합니다. |
directory_iterator 클래스 |
파일 시스템 디렉터리에서 파일 이름을 통해 시퀀스되는 입력 반복기에 대해 설명합니다. |
filesystem_error 클래스 |
하위 수준 시스템 오버플로를 보고하기 위해 throw되는 예외에 대한 기본 클래스입니다. |
path 클래스 |
파일 이름으로 사용하기 적합한 템플릿 형식 String 의 개체를 저장하는 클래스를 정의합니다. |
recursive_directory_iterator 클래스 |
파일 시스템 디렉터리에서 파일 이름을 통해 시퀀스되는 입력 반복기에 대해 설명합니다. 이 반복기는 하위 디렉터리로도 상속됩니다. |
file_status 클래스 |
file_type 을 래핑합니다. |
구조체
속성 | 설명 |
---|---|
space_info 구조체 |
볼륨에 대한 정보를 보관합니다. |
함수
<filesystem>
함수
연산자
열거형
속성 | 설명 |
---|---|
copy_options |
copy_file과 함께 사용되는 열거형이며 대상 파일이 이미 있는 경우의 동작을 결정합니다. |
directory_options |
디렉터리 반복기에 대한 옵션을 지정하는 열거형입니다. |
file_type |
파일 형식에 대한 열거형입니다. |
perm_options |
함수에 대한 옵션을 열거합니다 permissions . |
perms |
사용 권한 및 사용 권한에 대한 옵션을 전달하는 데 사용되는 비트 마스크 형식입니다. |