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을 던질 수 있어요.

    1. OS API 오류가 있으면 p를 첫 경로 인자, OS 오류 코드를 오류 코드 인자로 삼아 std::filesystem::filesystem_error를 던져요.
    1. OS API 호출이 실패하면 ec에 OS 오류 코드를 설정하고, 오류가 없다면 ec.clear()를 실행해요.

참고

스파스 파일을 지원하는 시스템에서는 파일 크기를 늘려도 파일이 차지하는 공간이 늘어나지 않아요. 공간 할당은 0이 아닌 데이터가 쓰일 때만 발생해요.

더 알아보기 (Learn more)

cppreference