2008-11-25 5 views
6

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. I suche nach sowas wie File.CanCreate(@"C:\myfolder\myfile.aaa"), habe aber solch eine Methode nicht gefunden. 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. Kennen Sie eine bessere Lösung?Wie überprüfe ich, ob ich eine Datei in einem bestimmten Ordner erstellen kann?

+0

Beachten Sie jedoch, dass die Prüfung, ob Sie eine Datei erstellen können (wie auch immer) und später die eigentliche Erstellung der Datei, dennoch einen Fehler ergeben kann (Sie haben hier eine Race-Bedingung). Daher ist es normalerweise am besten, nur die (endgültige) Datei zu erstellen und mögliche Fehler/Ausnahmen zu behandeln. –

+0

Sie haben Recht, aber ich stelle diese Informationen zur späteren Verwendung zur Verfügung, ich bin nur dafür verantwortlich, diese Informationen zu geben, wenn sich die Berechtigungen danach ändern, wird eine andere Art von Fehler ausgelöst. –

Antwort

14

In Wirklichkeit wird das Erstellen einer Dummy-Datei in den meisten Anwendungen keine großen Auswirkungen auf die Leistung haben. Natürlich, wenn Sie Berechtigungen fortgeschritten mit erstellen, aber nicht zerstören haarige ein wenig bekommen könnte ...

Guids für zufällige Namen immer praktisch sind (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; 
} 
1

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

Aber das wird 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 zu versuchen.

Verwandte Themen