Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::filesy...resize_file(3)  C++ Standard Libary std::filesy...resize_file(3)

NAME
       std::filesystem::resize_file - std::filesystem::resize_file

Synopsis
	  Defined in header <filesystem>
	  void resize_file( const std::filesystem::path& p,

	  std::uintmax_t new_size );
	  void resize_file( const std::filesystem::path& p,  (since C++17)
	  std::uintmax_t new_size,

	  std::error_code& ec )	noexcept;

	  Changes the size of the regular file named by	p as if	by POSIX trun-
       cate: if	the file
	  size	was previously larger than new_size, the remainder of the file
       is discarded. If
	  the file was previously smaller than new_size, the file size is  in-
       creased and the
	  new area appears as if zero-filled.

Parameters
	  p	   - path to resize
	  new_size - size that the file	will now have
	  ec	    -  out-parameter  for  error reporting in the non-throwing
       overload

Return value
	  (none)

Exceptions
	  The overload that does not take a std::error_code& parameter throws
	  filesystem::filesystem_error	on  underlying	OS  API	 errors,  con-
       structed	with p as the
	  first	 path  argument	 and the OS error code as the error code argu-
       ment. The overload
	  taking a std::error_code& parameter sets it to the OS	API error code
       if an OS	API
	  call fails, and executes ec.clear() if no errors occur. Any overload
       not marked
	  noexcept may throw std::bad_alloc if memory allocation fails.

Notes
	  On systems that support sparse files,	increasing the file size  does
       not increase the
	  space	 it  occupies on the file system: space	allocation takes place
       only when
	  non-zero bytes are written to	the file.

Example
	  demonstrates the effect of creating a	sparse file on the free	space

       // Run this code

	#include <iostream>
	#include <fstream>
	#include <filesystem>
	namespace fs = std::filesystem;
	int main()
	{
	    fs::path p = fs::temp_directory_path() / "example.bin";
	    std::ofstream(p).put('a');
	    std::cout << "File size:  "	<< fs::file_size(p) << '\n'
		      << "Free space: "	<< fs::space(p).free <<	'\n';
	    fs::resize_file(p, 64*1024); // resize to 64 KB
	    std::cout << "File size:  "	<< fs::file_size(p) << '\n'
		      << "Free space: "	<< fs::space(p).free <<	'\n';
	    fs::remove(p);
	}

Possible output:
	File size:  1
	Free space: 31805444096
	File size:  65536
	Free space: 31805444096

See also
	  file_size returns the	size of	a file
	  (C++17)   (function)
	  space	    determines available free space on the file	system
	  (C++17)   (function)

http://cppreference.com		  2022.07.31	  std::filesy...resize_file(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::filesystem::resize_file&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help