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(각 char행위자에 대해 하나 이상의 요소)으로 인코딩된 null로 끝나는 시퀀스를 wchar_t사용합니다.

  • POSIX는 UTF-8로 인코딩된 null 종료 시퀀스 char(각 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> 함수

연산자

<filesystem> 연산자

열거형

이름 설명
copy_options copy_file과 함께 사용되는 열거형이며 대상 파일이 이미 있는 경우의 동작을 결정합니다.
directory_options 디렉터리 반복기에 대한 옵션을 지정하는 열거형입니다.
file_type 파일 형식에 대한 열거형입니다.
perm_options 함수에 대한 옵션을 열거합니다 permissions .
perms 사용 권한 및 사용 권한에 대한 옵션을 전달하는 데 사용되는 비트 마스크 형식입니다.

참고 항목

헤더 파일 참조