std::filesystem:: resize_file
|
Definido en el encabezado
<filesystem>
|
||
|
void
resize_file
(
const
std::
filesystem
::
path
&
p,
std:: uintmax_t new_size ) ; |
(1) | (desde C++17) |
|
void
resize_file
(
const
std::
filesystem
::
path
&
p,
std::
uintmax_t
new_size,
|
(2) | (desde C++17) |
Cambia el tamaño del archivo regular nombrado por
p
como si fuera mediante POSIX
truncate
: si el tamaño del archivo era previamente mayor que
new_size
, el resto del archivo se descarta. Si el archivo era previamente menor que
new_size
, el tamaño del archivo se incrementa y la nueva área aparece como si estuviera llena de ceros.
Contenidos |
Parámetros
| p | - | ruta a redimensionar |
| new_size | - | tamaño que tendrá ahora el archivo |
| ec | - | parámetro de salida para reporte de errores en la sobrecarga no lanzadora |
Valor de retorno
(ninguno)
Excepciones
Cualquier sobrecarga no marcada como
noexcept
puede lanzar
std::bad_alloc
si la asignación de memoria falla.
Notas
En sistemas que admiten archivos dispersos, aumentar el tamaño del archivo no incrementa el espacio que ocupa en el sistema de archivos: la asignación de espacio ocurre únicamente cuando se escriben bytes distintos de cero en el archivo.
Ejemplo
Demuestra el efecto que tiene la creación de un archivo disperso en el espacio libre.
#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); }
Salida posible:
File size: 1 Free space: 42,954,108,928 File size: 65,536 Free space: 42,954,108,928
Véase también
|
(C++17)
|
devuelve el tamaño de un archivo
(función) |
|
(C++17)
|
determina el espacio libre disponible en el sistema de archivos
(función) |