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

FreeBSD Manual Pages

  
 
  

home | help
std::filesy...copy_options(3) C++ Standard Libarystd::filesy...copy_options(3)

NAME
       std::filesystem::copy_options - std::filesystem::copy_options

Synopsis
	  Defined in header <filesystem>
	  enum class copy_options {

	  none = /* unspecified	*/,
	  skip_existing	= /* unspecified */,
	  overwrite_existing = /* unspecified */,
	  update_existing = /* unspecified */,
	  recursive = /* unspecified */,	   (since C++17)
	  copy_symlinks	= /* unspecified */,
	  skip_symlinks	= /* unspecified */,
	  directories_only = /*	unspecified */,
	  create_symlinks = /* unspecified */,
	  create_hard_links = /* unspecified */

	  };

	  This	type represents	available options that control the behavior of
       the copy() and
	  copy_file() function.

	  copy_options satisfies the requirements of BitmaskType (which	 means
       the bitwise
	  operators  operator&,	 operator|,  operator^,	operator~, operator&=,
       operator|=, and
	  operator^= are defined for this type).  none	represents  the	 empty
       bitmask;	every
	  other	enumerator represents a	distinct bitmask element.

Member constants
	  At  most one copy option in each of the following options groups may
       be present,
	  otherwise the	behavior of the	copy functions is undefined.

	   Member constant				  Meaning
		      options controlling copy_file() when  the	 file  already
       exists
	  none		     Report an error (default behavior)
	  skip_existing	      Keep the existing	file, without reporting	an er-
       ror.
	  overwrite_existing Replace the existing file
	  update_existing    Replace the existing file only  if	 it  is	 older
       than the	file being
			     copied
		      options controlling the effects of copy()	on subdirecto-
       ries
	  none		     Skip subdirectories (default behavior)
	  recursive	     Recursively copy subdirectories and their content
		      options  controlling  the	 effects of copy() on symbolic
       links
	  none		     Follow symlinks (default behavior)
	  copy_symlinks	     Copy symlinks as symlinks,	not as the files  they
       point to
	  skip_symlinks	     Ignore symlinks
			  options controlling the kind of copying copy() does
	  none		     Copy file content (default	behavior)
	  directories_only   Copy the directory	structure, but do not copy any
       non-directory
			     files
			     Instead  of creating copies of files, create sym-
       links pointing to
	  create_symlinks    the originals. Note: the source path must	be  an
       absolute	path
			     unless the	destination path is in the current di-
       rectory.
	  create_hard_links   Instead  of  creating  copies  of	 files,	create
       hardlinks that
			     resolve to	the same files as the originals

Example
       // Run this code

	#include <cstdlib>
	#include <iostream>
	#include <fstream>
	#include <filesystem>
	namespace fs = std::filesystem;

	int main()
	{
	    fs::create_directories("sandbox/dir/subdir");
	    std::ofstream("sandbox/file1.txt").put('a');
	    fs::copy("sandbox/file1.txt", "sandbox/file2.txt");	// copy	file
	    fs::copy("sandbox/dir", "sandbox/dir2"); //	copy  directory	 (non-
       recursive)
	    const auto copyOptions = fs::copy_options::update_existing
				   | fs::copy_options::recursive
				   | fs::copy_options::directories_only
				   ;
	    fs::copy("sandbox",	"sandbox_copy",	copyOptions);
	    static_cast<void>(std::system("tree"));
	    fs::remove_all("sandbox");
	    fs::remove_all("sandbox_copy");
	}

Possible output:
	.
	 sandbox
	    dir
	       subdir
	    dir2
	    file1.txt
	    file2.txt
	 sandbox_copy
	     dir
		subdir
	     dir2

	8 directories, 2 files

See also
	  copy	    copies files or directories
	  (C++17)   (function)
	  copy_file copies file	contents
	  (C++17)   (function)

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

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

home | help