home | help
std::filesystem::is_empty(3)   C++ Standard Libary  std::filesystem::is_empty(3)

NAME
     std::filesystem::is_empty - std::filesystem::is_empty

Synopsis
	Defined in header <filesystem>
	bool  is_empty(  const std::filesystem::path& p );		     (1)
     (since C++17)
	bool is_empty( const std::filesystem::path& p, std::error_code&  ec  (2)
     (since C++17)
	);

	Checks whether the given path refers to an empty file or directory.

Parameters
	p  - path to examine
	ec - error code to modify in case of error

Return value
	true  if  the  path indicated by p refers to an empty file or directory,
     false
	otherwise. The non-throwing overload returns false if an error occurs.

Exceptions
	Any overload not marked noexcept may throw std::bad_alloc if memory  al-
     location
	fails.

	1) Throws std::filesystem::filesystem_error on underlying OS API errors,
     constructed
	with  p  as  the  first path argument and the OS error code as the error
     code argument.
	2) Sets a std::error_code& parameter to the OS API error code if  an  OS
     API call
	fails, and executes ec.clear() if no errors occur.

Example
     // Run this code

      #include <cstdio>
      #include <filesystem>
      #include <fstream>
      #include <iostream>

      int main()
      {
	  namespace fs = std::filesystem;

	  const fs::path tmp_dir{fs::temp_directory_path()};
	  std::cout << std::boolalpha
		    << "Temp dir: " << tmp_dir << '\n'
		    << "is_empty(): " << fs::is_empty(tmp_dir) << '\n';

	  const fs::path tmp_name{tmp_dir / std::tmpnam(nullptr)};
	  std::cout << "Temp file: " << tmp_name << '\n';

	  std::ofstream file{tmp_name.string()};
	  std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n';
	  file << "cppreference.com";
	  file.flush();
	  std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n'
		    << "file_size(): " << fs::file_size(tmp_name) << '\n';
	  file.close();
	  fs::remove(tmp_name);
      }

Possible output:
      Temp dir: "/tmp"
      is_empty(): false
      Temp file: "/tmp/fileCqd9DM"
      is_empty(): true
      is_empty(): false
      file_size(): 16

	Defect reports

	The  following	behavior-changing  defect  reports were applied retroac-
     tively to
	previously published C++ standards.

	   DR	 Applied to		 Behavior as published		    Cor-
     rect behavior
	LWG  3013  C++17       error_code  overload  marked  noexcept  but   can
     noexcept removed
			    allocate memory

See also
	status	       determines file attributes
	symlink_status determines file attributes, checking the symlink target
	(C++17)        (function)
	(C++17)
	exists	       checks whether path refers to existing file system object
	(C++17)        (function)

http://cppreference.com 	   2024.06.10	    std::filesystem::is_empty(3)

home | help