std::filesystem:: resize_file
|
헤더 파일에 정의됨
<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,
|
(2) | (C++17부터) |
p
로 명명된 일반 파일의 크기를 POSIX
truncate
와 유사하게 변경합니다: 이전 파일 크기가
new_size
보다 컸다면 파일의 나머지 부분은 삭제됩니다. 이전 파일 크기가
new_size
보다 작았다면 파일 크기가 증가하며 새로운 영역은 0으로 채워진 것처럼 나타납니다.
목차 |
매개변수
| p | - | 크기를 변경할 경로 |
| new_size | - | 파일이 가지게 될 새로운 크기 |
| ec | - | 비예외 발생 오버로드에서 오류 보고를 위한 출력 매개변수 |
반환값
(없음)
예외
noexcept
로 표시되지 않은 모든 오버로드는 메모리 할당이 실패할 경우
std::bad_alloc
을(를) throw할 수 있습니다.
참고 사항
희소 파일을 지원하는 시스템에서는 파일 크기를 늘려도 파일 시스템에서 차지하는 공간이 증가하지 않습니다: 0이 아닌 바이트가 파일에 기록될 때에만 공간 할당이 이루어집니다.
예제
스파스 파일 생성이 사용 가능한 공간에 미치는 영향을 보여줍니다.
#include <filesystem> #include <fstream> #include <iostream> #include <locale> int main() { auto p = std::filesystem::temp_directory_path() / "example.bin"; std::ofstream{p}.put('a'); std::cout.imbue(std::locale{"en_US.UTF8"}); std::cout << "File size: " << std::filesystem::file_size(p) << '\n' << "Free space: " << std::filesystem::space(p).free << '\n'; std::filesystem::resize_file(p, 64*1024); // resize to 64 KB std::cout << "File size: " << std::filesystem::file_size(p) << '\n' << "Free space: " << std::filesystem::space(p).free << '\n'; std::filesystem::remove(p); }
가능한 출력:
File size: 1 Free space: 42,954,108,928 File size: 65,536 Free space: 42,954,108,928
참고 항목
|
(C++17)
|
파일의 크기를 반환합니다
(함수) |
|
(C++17)
|
파일 시스템의 사용 가능한 여유 공간을 확인합니다
(함수) |