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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::experimental::filesystem::resize_file	-      std::experimen-
       tal::filesystem::resize_file

Synopsis
	  Defined in header <experimental/filesystem>
	  void resize_file(const path& p, std::uintmax_t new_size);
	  void	 resize_file(const   path&   p,	   std::uintmax_t    new_size,
       (filesystem TS)
	  error_code& ec);

	  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	error_code&  parameter	throws
       filesystem_error	on
	  underlying  OS  API errors, constructed with p as the	first argument
       and the OS error
	  code as the error code argument. std::bad_alloc  may	be  thrown  if
       memory allocation
	  fails. The overload taking a 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.
       This overload
	  has
	  noexcept specification:
	  noexcept

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 <experimental/filesystem>
	namespace fs = std::experimental::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
		    (function)
	  space	    determines available free space on the file	system
		    (function)

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

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

home | help