Filesystem library (since C++17)
파일 시스템 라이브러리는 경로, 일반 파일, 디렉토리와 같은 파일 시스템 및 그 구성 요소에 대한 작업을 수행하기 위한 기능을 제공합니다.
파일시스템 라이브러리는 원래 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)
|
경로를 나타냄
(클래스) |
|
(C++17)
|
파일 시스템 오류 시 발생하는 예외
(클래스) |
|
(C++17)
|
디렉토리 엔트리
(클래스) |
|
(C++17)
|
디렉토리 내용에 대한 반복자
(클래스) |
|
(C++17)
|
디렉토리와 그 하위 디렉토리의 내용에 대한 반복자
(클래스) |
|
(C++17)
|
파일 유형과 권한을 나타냄
(class) |
|
(C++17)
|
파일시스템의 사용 가능 및 여유 공간에 대한 정보
(class) |
|
(C++17)
|
파일의 유형
(열거형) |
|
(C++17)
|
파일 시스템 권한을 식별함
(enum) |
|
(C++17)
|
권한 작업의 의미를 지정합니다
(enum) |
|
(C++17)
|
복사 작업의 의미론을 지정합니다
(enum) |
|
(C++17)
|
디렉토리 내용 순회를 위한 옵션들
(enum) |
|
(C++17)
|
파일 시간 값을 나타냄
(typedef) |
비멤버 함수 |
|
|
헤더 파일에 정의됨
<filesystem>
|
|
|
네임스페이스
std::filesystem
에 정의됨
|
|
|
(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)
|
현재 작업 디렉토리를 반환하거나 설정합니다
(function) |
|
(C++17)
|
경로가 존재하는 파일 시스템 객체를 참조하는지 확인합니다
(함수) |
|
(C++17)
|
두 경로가 동일한 파일 시스템 객체를 참조하는지 확인합니다
(함수) |
|
(C++17)
|
파일의 크기를 반환합니다
(함수) |
|
(C++17)
|
특정 파일을 참조하는 하드 링크의 수를 반환합니다
(함수) |
|
(C++17)
|
마지막 데이터 수정 시간을 가져오거나 설정합니다
(함수) |
|
(C++17)
|
파일 접근 권한을 수정합니다
(function) |
|
(C++17)
|
심볼릭 링크의 대상을 획득함
(함수) |
|
(C++17)
(C++17)
|
파일 또는 빈 디렉토리를 제거
파일 또는 디렉토리와 그 모든 내용을 재귀적으로 제거 (함수) |
|
(C++17)
|
파일 또는 디렉토리를 이동하거나 이름을 변경합니다
(function) |
|
(C++17)
|
일반 파일의 크기를 절단 또는 제로 필을 통해 변경합니다
(함수) |
|
(C++17)
|
파일 시스템에서 사용 가능한 여유 공간을 결정합니다
(함수) |
|
(C++17)
(C++17)
|
파일 속성을 결정합니다
심볼릭 링크 대상을 확인하여 파일 속성을 결정합니다 (function) |
|
(C++17)
|
임시 파일에 적합한 디렉토리를 반환합니다
(함수) |
파일 유형 |
|
|
(C++17)
|
주어진 경로가 블록 장치를 참조하는지 확인합니다
(함수) |
|
(C++17)
|
주어진 경로가 문자 장치를 참조하는지 확인합니다
(함수) |
|
(C++17)
|
주어진 경로가 디렉토리를 참조하는지 확인합니다
(function) |
|
(C++17)
|
주어진 경로가 빈 파일 또는 디렉토리를 참조하는지 확인합니다
(function) |
|
(C++17)
|
주어진 경로가 명명된 파이프를 참조하는지 확인합니다
(함수) |
|
(C++17)
|
인수가
other
파일을 참조하는지 확인합니다
(함수) |
|
(C++17)
|
인수가 일반 파일을 참조하는지 확인합니다
(함수) |
|
(C++17)
|
인수가 명명된 IPC 소켓을 참조하는지 확인합니다
(함수) |
|
(C++17)
|
인수가 심볼릭 링크를 참조하는지 확인합니다
(함수) |
|
(C++17)
|
파일 상태가 알려져 있는지 확인합니다
(함수) |
참고 사항
이 라이브러리를 사용하려면 추가 컴파일러/링커 옵션이 필요할 수 있습니다. GNU 구현체 9.1 이전 버전은
-lstdc++fs
와 링크해야 하며, LLVM 구현체 LLVM 9.0 이전 버전은
-lc++fs
와 링크해야 합니다.
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_filesystem
|
201703L
|
(C++17) | 파일시스템 라이브러리 |
참고 항목
|
C++ 문서
for
File System TS
|