Namensräume
Varianten
Aktionen

std::filesystem::copy_options

Von cppreference.com
 
 
 
Definiert in Header <filesystem>
enum class copy_options {

    none = /* nicht spezifiziert */,
    skip_existing = /* nicht spezifiziert */,
    overwrite_existing = /* nicht spezifiziert */,
    update_existing = /* nicht spezifiziert */,
    recursive = /* nicht spezifiziert */,
    copy_symlinks = /* nicht spezifiziert */,
    skip_symlinks = /* nicht spezifiziert */,
    directories_only = /* nicht spezifiziert */,
    create_symlinks = /* nicht spezifiziert */,
    create_hard_links = /* nicht spezifiziert */

};
(seit C++17)

Dieser Typ repräsentiert verfügbare Optionen, die das Verhalten der Funktionen copy() und copy_file() steuern.

copy_options erfüllt die Anforderungen von BitmaskType (was bedeutet, dass die bitweisen Operatoren operator&, operator|, operator^, operator~, operator&=, operator|= und operator^= für diesen Typ definiert sind). none repräsentiert die leere Bitmaske; jeder andere Enumerator repräsentiert ein eigenes Bitmaskenelement.

[bearbeiten] Member-Konstanten

Höchstens eine Kopieroption aus jeder der folgenden Optionsgruppen darf vorhanden sein, andernfalls ist das Verhalten der Kopierfunktionen undefiniert.

Member-Konstante Bedeutung
Optionen, die copy_file() steuern, wenn die Datei bereits existiert
keine Fehler melden (Standardverhalten).
skip_existing Behalten Sie die vorhandene Datei bei, ohne einen Fehler zu melden.
overwrite_existing Ersetzen Sie die vorhandene Datei.
update_existing Ersetzen Sie die vorhandene Datei nur, wenn sie älter ist als die zu kopierende Datei.
Optionen, die die Auswirkungen von copy() auf Unterverzeichnisse steuern
keine Überspringen Sie Unterverzeichnisse (Standardverhalten).
recursive Kopieren Sie Unterverzeichnisse und deren Inhalt rekursiv.
Optionen, die die Auswirkungen von copy() auf symbolische Links steuern
keine Folgen Sie Symlinks (Standardverhalten).
copy_symlinks Kopieren Sie Symlinks als Symlinks, nicht als die Dateien, auf die sie verweisen.
skip_symlinks Ignorieren Sie Symlinks.
Optionen, die die Art des Kopiervorgangs von copy() steuern
keine Kopieren Sie den Dateiinhalt (Standardverhalten).
directories_only Kopieren Sie die Verzeichnisstruktur, aber kopieren Sie keine Nicht-Datei-Dateien.
create_symlinks Anstatt Kopien von Dateien zu erstellen, erstellen Sie Symlinks, die auf die Originale verweisen. Hinweis: Der Quellpfad muss ein absoluter Pfad sein, es sei denn, der Zielpfad befindet sich im aktuellen Verzeichnis.
create_hard_links Anstatt Kopien von Dateien zu erstellen, erstellen Sie Hardlinks, die auf dieselben Dateien wie die Originale verweisen.

[bearbeiten] Beispiel

#include <cstdlib>
#include <filesystem>
#include <fstream>
#include <iostream>
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");
}

Mögliche Ausgabe

.
├── sandbox
│   ├── dir
│   │   └── subdir
│   ├── dir2
│   ├── file1.txt
│   └── file2.txt
└── sandbox_copy
    ├── dir
    │   └── subdir
    └── dir2
 
8 directories, 2 files

[bearbeiten] Siehe auch

(C++17)
kopiert Dateien oder Verzeichnisse
(Funktion) [bearbeiten]
(C++17)
kopiert Dateiinhalte
(Funktion) [bearbeiten]