c# - länge - meta title beispiel



Wie überprüfe ich, ob ich eine Datei in einem bestimmten Ordner erstellen kann (2)

Ich muss wissen, ob ich eine Datei in einem bestimmten Ordner erstellen kann, aber es gibt zu viele Dinge zu überprüfen wie Berechtigungen, doppelte Dateien usw. Ich bin auf der Suche nach etwas wie File.CanCreate(@"C:\myfolder\myfile.aaa" ), aber eine solche Methode nicht gefunden haben. Das einzige, was ich dachte, ist zu versuchen, eine Dummy-Datei zu erstellen und nach Ausnahmen zu suchen, aber das ist eine ungute Lösung, die sich auch auf die Leistung auswirkt. Kennst du eine bessere Lösung?


In Wirklichkeit wird das Erstellen einer Dummy-Datei in den meisten Anwendungen keine großen Auswirkungen auf die Leistung haben. Natürlich, wenn Sie erweiterte Berechtigungen mit create, aber nicht zerstören, könnte es ein bisschen haarig werden ...

Guids sind immer praktisch für zufällige Namen (um Konflikte zu vermeiden) - so etwas wie:

string file = Path.Combine(dir, Guid.NewGuid().ToString() + ".tmp");
// perhaps check File.Exists(file), but it would be a long-shot...
bool canCreate;
try
{
    using (File.Create(file)) { }
    File.Delete(file);
    canCreate = true;
}
catch
{
    canCreate = false;
}

Sie können CAS verwenden , um zu überprüfen, dass keine .NET-Richtlinien (caspol) das Erstellen und Schreiben einer Datei an diesem Speicherort einschränken.

Dies wird jedoch nicht die Windows-Richtlinien abdecken. Sie müssen die NTFS-Richtlinien manuell überprüfen. Und selbst dann gibt es Prozesse, die entscheiden können, dass Sie keine Datei erstellen dürfen (zum Beispiel einen Virenscanner).

Der beste und vollständigste Weg ist es, es auszuprobieren.





filesystems