std::experimental::filesystem:: create_directory, std::experimental::filesystem:: create_directories
From cppreference.net
<
cpp
|
experimental
|
fs
|
Definiert im Header
<experimental/filesystem>
|
||
|
bool
create_directory
(
const
path
&
p
)
;
bool create_directory ( const path & p, error_code & ec ) ; |
(1) | (Filesystem TS) |
|
bool
create_directory
(
const
path
&
p,
const
path
&
existing_p
)
;
bool create_directory ( const path & p, const path & existing_p, error_code & ec ) ; |
(2) | (Filesystem TS) |
|
bool
create_directories
(
const
path
&
p
)
;
bool create_directories ( const path & p, error_code & ec ) ; |
(3) | (Filesystem TS) |
1)
Erstellt das Verzeichnis
p
wie durch POSIX
mkdir()
mit einem zweiten Argument von
static_cast
<
int
>
(
fs
::
perms
::
all
)
(das übergeordnete Verzeichnis muss bereits existieren). Falls
p
bereits existiert und bereits ein Verzeichnis ist, führt die Funktion keine Aktion aus (dieser Zustand wird nicht als Fehler behandelt).
2)
Gleich wie
(1)
, mit der Ausnahme, dass die Attribute des neuen Verzeichnisses von
existing_p
kopiert werden (welches ein existierendes Verzeichnis sein muss). Es ist betriebssystemabhängig, welche Attribute kopiert werden: Auf POSIX-Systemen werden die Attribute kopiert wie durch
Auf Windows-Betriebssystemen werden die Attribute kopiert wie durch
stat(existing_p.c_str(), &attributes_stat) mkdir(p.c_str(), attributes_stat.st_mode)
CreateDirectoryExW(existing_p.c_str(), p.c_str(), 0)
3)
Führt
(1)
für jedes Element von
p
aus, das noch nicht existiert.
Die nicht-werfenden Überladungen geben false zurück, falls ein Fehler auftritt.
Inhaltsverzeichnis |
Parameter
| p | - | der Pfad zum neuen zu erstellenden Verzeichnis |
| existing_p | - | der Pfad zu einem Verzeichnis, von dem die Attribute kopiert werden sollen |
| ec | - | Out-Parameter für Fehlerberichterstattung in der nicht-werfenden Überladung |
Rückgabewert
1,2)
true
falls die Verzeichniserstellung erfolgreich ist,
false
andernfalls.
Ausnahmen
1,3)
Die Überladung, die keinen
error_code
&
Parameter akzeptiert, wirft
filesystem_error
bei zugrundeliegenden OS-API-Fehlern, konstruiert mit
p
als erstem Argument und dem OS-Fehlercode als Fehlercode-Argument.
std::
bad_alloc
kann geworfen werden, wenn die Speicherallokation fehlschlägt. Die Überladung, die einen
error_code
&
Parameter akzeptiert, setzt diesen auf den OS-API-Fehlercode, wenn ein OS-API-Aufruf fehlschlägt, und führt
ec.
clear
(
)
aus, wenn keine Fehler auftreten. Diese Überladung hat
noexcept
Spezifikation:
noexcept
2)
Die Überladung, die keinen
error_code
&
Parameter akzeptiert, wirft bei zugrundeliegenden OS-API-Fehlern
filesystem_error
, konstruiert mit
p
als erstes Argument,
existing_p
als zweites Argument und dem OS-Fehlercode als Fehlercode-Argument.
std::
bad_alloc
kann geworfen werden, wenn die Speicherallokation fehlschlägt. Die Überladung, die einen
error_code
&
Parameter akzeptiert, setzt diesen auf den OS-API-Fehlercode, wenn ein OS-API-Aufruf fehlschlägt, und führt
ec.
clear
(
)
aus, wenn keine Fehler auftreten. Diese Überladung hat
noexcept
Spezifikation:
noexcept
Hinweise
Die attributerhaltende Überladung (2) wird implizit von copy() aufgerufen, wenn Verzeichnisse rekursiv kopiert werden. Ihr Äquivalent in boost.filesystem ist copy_directory (mit umgekehrter Argumentreihenfolge).
Beispiel
Diesen Code ausführen
#include <cstdlib> #include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::create_directories("sandbox/1/2/a"); fs::create_directory("sandbox/1/2/b"); fs::permissions("sandbox/1/2/b", fs::perms::remove_perms | fs::perms::others_all); fs::create_directory("sandbox/1/2/c", "sandbox/1/2/b"); std::system("ls -l sandbox/1/2"); fs::remove_all("sandbox"); }
Mögliche Ausgabe:
drwxr-xr-x 2 user group 4096 Apr 15 09:33 a drwxr-x--- 2 user group 4096 Apr 15 09:33 b drwxr-x--- 2 user group 4096 Apr 15 09:33 c
Siehe auch
|
erstellt eine symbolische Verknüpfung
(Funktion) |
|
|
kopiert Dateien oder Verzeichnisse
(Funktion) |
|
|
identifiziert Dateisystemberechtigungen
(Enumeration) |