std::filesystem::copy_options
| Definiert in Header <filesystem> |
||
| enum class copy_options { none = /* 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) |
| (C++17) |
kopiert Dateiinhalte (Funktion) |