std::filesystem::resize_file
std::filesystem::resize_file (파일 크기 변경)
p가 가리키는 일반 파일의 크기를 변경하는 함수예요. C++17부터 있어요.
출처: cppreference
본문
<filesystem> 헤더에 정의돼 있어요.
void resize_file( const std::filesystem::path& p,
std::uintmax_t new_size ); // (1) C++17
void resize_file( const std::filesystem::path& p,
std::uintmax_t new_size,
std::error_code& ec ) noexcept; // (2) C++17
POSIX truncate처럼 p가 가리키는 일반 파일의 크기를 변경해요. 파일 크기가 이전에 new_size보다 컸다면 파일의 나머지 부분은 버려져요. 파일이 이전에 new_size보다 작았다면 파일 크기가 늘어나고 새 영역은 0으로 채워진 것처럼 보여요.
매개변수
p— 크기를 변경할 경로new_size— 파일이 갖게 될 크기ec— 예외 없는 버전에서 오류 보고용 출력 매개변수
반환값
(없음)
예외
noexcept로 표시되지 않은 오버로드는 메모리 할당이 실패하면 std::bad_alloc을 던질 수 있어요.
-
- OS API 오류가 있으면
p를 첫 경로 인자, OS 오류 코드를 오류 코드 인자로 삼아std::filesystem::filesystem_error를 던져요.
- OS API 오류가 있으면
-
- OS API 호출이 실패하면
ec에 OS 오류 코드를 설정하고, 오류가 없다면ec.clear()를 실행해요.
- OS API 호출이 실패하면
참고
스파스 파일을 지원하는 시스템에서는 파일 크기를 늘려도 파일이 차지하는 공간이 늘어나지 않아요. 공간 할당은 0이 아닌 데이터가 쓰일 때만 발생해요.