Es sieht so aus, als ob OpenOptions
dieses Szenario und eine vorhandene Datei nicht unterstützt wird entweder abgeschnitten oder überschrieben.
Ab Rust 1.9.0 gibt es OpenOptions::create_new
Damit können Sie sicher und atomar sicherstellen, dass Sie eine neue Datei erstellen und Ihr Befehl andernfalls fehlschlägt.
Dies ist in C11 möglich oder durch direkte Verwendung von OS-API-Funktionen auf niedriger Ebene.
Wenn Sie C11 verwenden, können Sie mit fopen
die Datei im "wx"
-Modus öffnen .
Andernfalls sollte unter Linux sowohl O_CREAT
als auch O_EXCL
an die open(3)
übergeben werden Funktion. Oder übergeben Sie unter Windows CREATE_NEW
an den Parameter dwCreationDisposition
von CreateFile()
Funktion.
BEARBEITEN: Ich habe ursprünglich die Tatsache übersehen, dass die Funktion open
in C11 aktualisiert wurde.
Update: Wie Mathieu David in den Kommentaren darauf hingewiesen hat. exists()
aus
Mit std::path::Path
kann überprüft werden, ob ein Pfad existiert.
Alte Antwort:
In C wird normalerweise überprüft, ob ein Dateiname / Pfad existiert:
%Vor%
access
gibt 0 zurück, wenn die Datei existiert, vorausgesetzt, Sie haben die erforderlichen Berechtigungen.Ich habe schnell nach einem einheimischen Rust-Äquivalent gesucht und konnte nichts finden. Daher müssen Sie sich möglicherweise auf
libc::access
Dafür.
Tags und Links rust