std::filesystem::directory_entry
std::filesystem::directory_entry (디렉터리 항목)
디렉터리 항목을 나타내는 클래스예요. 경로를 멤버로 저장하며, 디렉터리 순회 중에 추가 파일 속성(하드 링크 수, 상태, 심볼릭 링크 상태, 파일 크기, 마지막 수정 시간)도 저장할 수 있어요. C++17부터 있어요.
출처: cppreference
본문
<filesystem> 헤더에 정의돼 있어요.
class directory_entry;
디렉터리 항목을 나타내요. 이 객체는 경로를 멤버로 저장하고, 디렉터리 순회 중에 추가 파일 속성(하드 링크 수, 상태, 심볼릭 링크 상태, 파일 크기, 마지막 수정 시간)도 저장할 수 있어요.
멤버 함수
- (constructor) — 디렉터리 항목을 생성해요.
- (destructor) — 기본 소멸자.
- operator= — 내용을 할당해요.
- assign — 내용을 할당해요.
- replace_filename — 파일 이름을 설정해요.
- refresh — 캐시된 파일 속성을 갱신해요.
- path, operator const path& — 항목이 가리키는 경로를 돌려줘요.
- exists — 디렉터리 항목이 기존 파일시스템 개체를 가리키는지 확인해요.
- is_block_file — 블록 장치를 가리키는지 확인해요.
- is_character_file — 문자 장치를 가리키는지 확인해요.
- is_directory — 디렉터리를 가리키는지 확인해요.
- is_fifo — 네임드 파이프를 가리키는지 확인해요.
- is_other — 기타 파일을 가리키는지 확인해요.
- is_regular_file — 일반 파일을 가리키는지 확인해요.
- is_socket — 네임드 IPC 소켓을 가리키는지 확인해요.
- is_symlink — 심볼릭 링크를 가리키는지 확인해요.
그 외에도 file_size, hard_link_count, last_write_time, status, symlink_status 접근자와 그 error_code 버전, 그리고 operator==(C++20) 비교 연산자를 제공해요.
예제
#include <filesystem>
#include <iostream>
namespace fs = std::filesystem;
int main()
{
for (const auto& entry : fs::directory_iterator("."))
std::cout << entry.path() << (entry.is_directory() ? " (dir)\n" : "\n");
}