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) (filesys-
     tem 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 followed).

	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 an error_code& parameter throws filesys-
     tem_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 an 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 <experimental/filesystem>
      #include <fstream>
      #include <iostream>
      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)

Categories:
	  * Noindexed pages
	  * unconditionally noexcept

Hidden categories:
	  * Pages with unreviewed unconditional noexcept template
	  * Pages with unreviewed noexcept template

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

home | help