std::filesystem:: copy_options
|
Definiert im Header
<filesystem>
|
||
|
enum
class
copy_options
{
none
=
/* unspecified */
,
|
(seit C++17) | |
Dieser Typ repräsentiert verfügbare Optionen, die das Verhalten der copy() und copy_file() Funktion 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 eindeutiges Bitmaskenelement.
Member-Konstanten
In jeder der folgenden Optionsgruppen darf höchstens eine Kopieroption vorhanden sein, andernfalls ist das Verhalten der Kopierfunktionen undefiniert.
| Member constant | Bedeutung |
|---|---|
| Optionen zur Steuerung von copy_file() wenn die Datei bereits existiert | |
none
|
Einen Fehler melden (Standardverhalten). |
skip_existing
|
Bestehende Datei beibehalten, ohne Fehlermeldung. |
overwrite_existing
|
Vorhandene Datei ersetzen. |
update_existing
|
Vorhandene Datei nur ersetzen, wenn sie älter als die zu kopierende Datei ist. |
| Optionen zur Steuerung der Auswirkungen von copy() auf Unterverzeichnisse | |
none
|
Unterverzeichnisse überspringen (Standardverhalten). |
recursive
|
Unterverzeichnisse und deren Inhalte rekursiv kopieren. |
| Optionen zur Steuerung der Auswirkungen von copy() auf symbolische Links | |
none
|
Symbolischen Links folgen (Standardverhalten). |
copy_symlinks
|
Symbolische Links als Links kopieren, nicht als die Dateien, auf die sie verweisen. |
skip_symlinks
|
Symbolische Links ignorieren. |
| Optionen zur Steuerung der Art des Kopiervorgangs von copy() | |
none
|
Dateiinhalt kopieren (Standardverhalten). |
directories_only
|
Verzeichnisstruktur kopieren, aber keine Nicht-Verzeichnisdateien kopieren. |
create_symlinks
|
Anstatt Kopien von Dateien zu erstellen, symbolische Links zu den Originalen anlegen. 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, Hardlinks erstellen, die auf dieselben Dateien wie die Originale verweisen. |
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"); // Datei kopieren fs::copy("sandbox/dir", "sandbox/dir2"); // Verzeichnis kopieren (nicht rekursiv) 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 Verzeichnisse, 2 Dateien
Siehe auch
|
(C++17)
|
kopiert Dateien oder Verzeichnisse
(Funktion) |
|
(C++17)
|
kopiert Dateiinhalte
(Funktion) |