Stellen Sie sich vor, ich möchte die folgende Datei erstellen (oder überschreiben): - C:\Temp\Bar\Foo\Test.txt
Verwendung der File.Create (..) -Methode kann dies geschehen .
ABER, wenn ich keinen der folgenden Ordner habe (von diesem Beispielpfad oben)
- Temp
- Bar
- Foo
dann bekomme ich eine DirectoryNotFoundException ausgelöst.
Also .. gegeben ein Weg, wie können wir alle die Ordner rekursiv erstellen notwendig , um die Datei zu erstellen .. für diesen Pfad? Wenn temporäre oder Balkenordner vorhanden sind, Foo jedoch nicht ... dann wird dies ebenfalls erstellt.
Nehmen wir zur Vereinfachung an, dass keine Sicherheitsbedenken bestehen - alle Berechtigungen sind in Ordnung usw.
c#
.net
file-access
Pure.Krome
quelle
quelle
Antworten:
Siehe diese MSDN-Seite .
Hoffe das hilft!
quelle
Directory.CreateDirectory
ohneDirectory.Exists
Prüfung anrufen - es wird nicht ausgelöst, wenn das Verzeichnis bereits vorhanden ist.Path.GetDirectoryName(string path)
, das Verzeichnis von Ihrem vollständigen Pfad zu erhaltenpath
sollte nicht den Dateinamen enthalten. Sopath
sollte das Beispiel des OP seinC:\Temp\Bar\Foo
. Nach dem Aufruf müssenDirectory.CreateDirectory(path);
Sie noch anrufenFile.Create("C:\Temp\Bar\Foo\Test.txt");
, um die Datei zu erstellen.Um zusammenzufassen, was in anderen Antworten kommentiert wurde:
Directory.CreateDirectory
erstellt die Verzeichnisse rekursiv und wenn das Verzeichnis bereits vorhanden ist, wird es ohne Fehler zurückgegeben.Wenn es passiert eine Datei sein
Foo
aufC:\Temp\Bar\Foo
eine Ausnahme wird geworfen werden.quelle
Verwenden Sie Directory.CreateDirectory, bevor Sie die Datei erstellen. Es erstellt den Ordner rekursiv für Sie.
quelle
Erstellt alle Verzeichnisse und Unterverzeichnisse wie im Pfad angegeben.
Dann können Sie eine Datei erstellen.
quelle
Sie müssen beide Teile des Pfads (Verzeichnis und Dateiname) überprüfen und jeden erstellen, wenn er nicht vorhanden ist.
Verwenden Sie
File.Exists
undDirectory.Exists
, um herauszufinden, ob sie existieren.Directory.CreateDirectory
erstellt den gesamten Pfad für Sie, sodass Sie diesen nur einmal aufrufen müssen, wenn das Verzeichnis nicht vorhanden ist, und dann einfach die Datei erstellen.quelle
Sie sollten Directory.CreateDirectory verwenden.
http://msdn.microsoft.com/en-us/library/54a0at6s.aspx
quelle
Sie möchten Directory.CreateDirectory ()
Hier ist eine Klasse, die ich verwende (konvertiert in C #). Wenn Sie ihr ein Quellverzeichnis und ein Ziel übergeben, werden alle Dateien und Unterordner dieses Verzeichnisses in Ihr Ziel kopiert:
}}
quelle
using Microsoft.VisualBasic;
Böse !!Angenommen, Ihre Assembly / Exe hat selbst die FileIO- Berechtigung, ist nicht richtig. Ihre Anwendung wird möglicherweise nicht mit Administratorrechten ausgeführt. Es ist wichtig, die Codezugriffssicherheit zu berücksichtigen und Berechtigungen anzufordern. Beispielcode:
Grundlegendes zur .NET-Codezugriffssicherheit
Ist "Code Access Security" von realer Bedeutung?
quelle
Ich weiß, dass es hier einige andere Antworten gibt, aber keine davon ist nicht vollständig genug. Der folgende Code erstellt Verzeichnisse (falls nicht vorhanden) und kopiert dann Dateien .
quelle