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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::experimental::filesystem::file_size	 - std::experimental::filesys-
       tem::file_size

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

	  Returns  the size of the regular file	p, determined as if by reading
       the st_size
	  member of the	structure obtained by POSIX stat  (symlinks  are  fol-
       lowed)

	  Attempting  to  determine  the  size	of a directory (as well	as any
       other file that is
	  not a	regular	file or	a symlink) is treated as an error.

	  The non-throwing overload returns returns -1 on errors.

Parameters
	  p  - path to examine
	  ec - out-parameter for error reporting in the	non-throwing overload

Return value
	  The size of the file,	in bytes.

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

Example
       // Run this code

	#include <iostream>
	#include <fstream>
	#include <experimental/filesystem>
	namespace fs = std::experimental::filesystem;
	int main()
	{
	    fs::path p = fs::current_path() / "example.bin";
	    std::ofstream(p).put('a'); // create file of size 1
	    std::cout << "File size = "	<< fs::file_size(p) << '\n';
	    fs::remove(p);

	    try	{
		fs::file_size("/dev"); // attempt to get size of a directory
	    } catch(fs::filesystem_error& e) {
		std::cout << e.what() << '\n';
	    }
	}

Possible output:
	File size = 1
	filesystem error: cannot get file size:	Is a directory [/dev]

See also
	  resize_file  changes	the  size  of  a regular file by truncation or
       zero-fill
		      (function)
	  space	      determines available free	space on the file system
		      (function)

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

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

home | help