Namespaces
Variants

Filesystem library (since C++17)

From cppreference.net

파일 시스템 라이브러리는 경로, 일반 파일, 디렉토리와 같은 파일 시스템 및 그 구성 요소에 대한 작업을 수행하기 위한 기능을 제공합니다.

파일시스템 라이브러리는 원래 boost.filesystem 으로 개발되었으며, 기술 사양 ISO/IEC TS 18822:2015 로 출판된 후 최종적으로 C++17부터 ISO C++에 통합되었습니다. Boost 구현체는 현재 C++17 라이브러리보다 더 많은 컴파일러와 플랫폼에서 사용 가능합니다.

파일시스템 라이브러리 기능들은 구현체가 계층적 파일 시스템에 접근할 수 없거나 필요한 기능을 제공하지 못하는 경우 사용 불가능할 수 있습니다. 일부 기능들은 기본 파일 시스템에서 지원되지 않으면 사용할 수 없을 수 있습니다 (예: FAT 파일시스템은 심볼릭 링크를 지원하지 않고 다중 하드 링크를 금지함). 이러한 경우에는 오류가 보고되어야 합니다.

이 라이브러리의 함수 호출이 파일 시스템 경쟁 을 유발할 경우, 즉 여러 스레드, 프로세스 또는 컴퓨터가 파일 시스템 내 동일 객체에 대한 접근과 수정을 중첩시킬 때 동작은 정의되지 않습니다 .

목차

라이브러리 전체 정의

  • file : 데이터를 저장하며, 쓰기, 읽기 또는 둘 다 가능한 파일 시스템 객체. 파일에는 이름과 속성이 있으며, 그 중 하나가 파일 유형입니다:
  • directory : 디렉터리 엔트리를 담는 컨테이너 역할을 하는 파일로, 다른 파일들(그 중 일부는 다른 중첩된 디렉터리일 수 있음)을 식별합니다. 특정 파일에 대해 논할 때, 해당 파일이 엔트리로 나타나는 디렉터리를 그 파일의 parent directory 라고 합니다. 부모 디렉터리는 상대 경로명 ".." 으로 표현될 수 있습니다.
  • regular file : 이름을 기존 파일과 연결하는 디렉터리 엔트리(즉, hard link ). 다중 하드 링크가 지원되는 경우, 파일은 마지막 하드 링크가 제거된 후 삭제됩니다.
  • symbolic link : 이름을 경로와 연결하는 디렉터리 엔트리로, 해당 경로가 존재할 수도 있고 존재하지 않을 수도 있습니다.
  • 기타 특수 파일 유형: block , character , fifo , socket .
  • 파일 이름 : 파일의 이름을 지정하는 문자열. 허용되는 문자, 대소문자 구분, 최대 길이 및 허용되지 않는 이름은 구현에서 정의됩니다. 이름 "." (점)과 ".." (점점)은 라이브러리 수준에서 특별한 의미를 가집니다.
  • 경로 : 파일을 식별하는 요소들의 시퀀스. 선택적 root-name (예: Windows에서 "C:" 또는 "//server" )로 시작하며, 그 뒤에 선택적 root-directory (예: Unix에서 "/" )가 오고, 그 뒤에 0개 이상의 파일 이름 시퀀스(마지막을 제외한 모든 요소는 디렉터리 또는 디렉터리에 대한 링크여야 함)가 옵니다. 경로의 문자열 표현( 경로명 )의 기본 형식(예: 구분자로 사용되는 문자)과 문자 인코딩은 구현에서 정의되며, 이 라이브러리는 이식 가능한 경로 표현을 제공합니다.
  • absolute path : 파일의 위치를 명확하게 식별하는 경로.
  • canonical path : 심볼릭 링크, "." 또는 ".." 요소를 포함하지 않는 절대 경로.
  • relative path : 파일 시스템 상의 특정 위치를 기준으로 파일 위치를 식별하는 경로. 특수 경로 이름 "." (점, "현재 디렉토리")과 ".." (점-점, "상위 디렉토리")은 상대 경로입니다.

클래스

헤더 파일에 정의됨 <filesystem>
정의된 네임스페이스 std::filesystem
(C++17)
경로를 나타냄
(클래스)
파일 시스템 오류 시 발생하는 예외
(클래스)
디렉토리 엔트리
(클래스)
디렉토리 내용에 대한 반복자
(클래스)
디렉토리와 그 하위 디렉토리의 내용에 대한 반복자
(클래스)
파일 유형과 권한을 나타냄
(class)
(C++17)
파일시스템의 사용 가능 및 여유 공간에 대한 정보
(class)
(C++17)
파일의 유형
(열거형)
(C++17)
파일 시스템 권한을 식별함
(enum)
권한 작업의 의미를 지정합니다
(enum)
복사 작업의 의미론을 지정합니다
(enum)
디렉토리 내용 순회를 위한 옵션들
(enum)
파일 시간 값을 나타냄
(typedef)

비멤버 함수

헤더 파일에 정의됨 <filesystem>
네임스페이스 std::filesystem 에 정의됨
(C++17)
절대 경로를 구성함
(함수)
정규 경로를 구성함
(함수)
상대 경로를 구성합니다
(function)
(C++17)
파일 또는 디렉토리를 복사합니다
(함수)
(C++17)
파일 내용 복사
(함수)
심볼릭 링크를 복사합니다
(함수)
새 디렉토리 생성
(함수)
하드 링크를 생성합니다
(함수)
심볼릭 링크 생성
(함수)
현재 작업 디렉토리를 반환하거나 설정합니다
(function)
(C++17)
경로가 존재하는 파일 시스템 객체를 참조하는지 확인합니다
(함수)
(C++17)
두 경로가 동일한 파일 시스템 객체를 참조하는지 확인합니다
(함수)
(C++17)
파일의 크기를 반환합니다
(함수)
특정 파일을 참조하는 하드 링크의 수를 반환합니다
(함수)
마지막 데이터 수정 시간을 가져오거나 설정합니다
(함수)
파일 접근 권한을 수정합니다
(function)
심볼릭 링크의 대상을 획득함
(함수)
(C++17) (C++17)
파일 또는 빈 디렉토리를 제거
파일 또는 디렉토리와 그 모든 내용을 재귀적으로 제거
(함수)
(C++17)
파일 또는 디렉토리를 이동하거나 이름을 변경합니다
(function)
일반 파일의 크기를 절단 또는 제로 필을 통해 변경합니다
(함수)
(C++17)
파일 시스템에서 사용 가능한 여유 공간을 결정합니다
(함수)
(C++17) (C++17)
파일 속성을 결정합니다
심볼릭 링크 대상을 확인하여 파일 속성을 결정합니다
(function)
임시 파일에 적합한 디렉토리를 반환합니다
(함수)
파일 유형
주어진 경로가 블록 장치를 참조하는지 확인합니다
(함수)
주어진 경로가 문자 장치를 참조하는지 확인합니다
(함수)
주어진 경로가 디렉토리를 참조하는지 확인합니다
(function)
(C++17)
주어진 경로가 빈 파일 또는 디렉토리를 참조하는지 확인합니다
(function)
(C++17)
주어진 경로가 명명된 파이프를 참조하는지 확인합니다
(함수)
(C++17)
인수가 other 파일을 참조하는지 확인합니다
(함수)
인수가 일반 파일을 참조하는지 확인합니다
(함수)
(C++17)
인수가 명명된 IPC 소켓을 참조하는지 확인합니다
(함수)
(C++17)
인수가 심볼릭 링크를 참조하는지 확인합니다
(함수)
파일 상태가 알려져 있는지 확인합니다
(함수)

참고 사항

이 라이브러리를 사용하려면 추가 컴파일러/링커 옵션이 필요할 수 있습니다. GNU 구현체 9.1 이전 버전은 -lstdc++fs 와 링크해야 하며, LLVM 구현체 LLVM 9.0 이전 버전은 -lc++fs 와 링크해야 합니다.

기능 테스트 매크로 표준 기능
__cpp_lib_filesystem 201703L (C++17) 파일시스템 라이브러리

참고 항목

C++ 문서 for File System TS