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?
Antwort
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;
}
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.
- 1. Wie überprüfe ich, ob ich eine Datei löschen kann?
- 2. Realbasic: Wie erstelle ich eine Datei in einem bestimmten Ordner?
- 3. Wie überprüfe ich, ob sich eine Datei in PowerShell in einem bestimmten Verzeichnis befindet?
- 4. Wie überprüfe ich, ob eine Datei an einem bestimmten Ort vorhanden ist?
- 5. Wie überprüfe ich, ob eine IsolatedStorageFile existiert?
- 6. Wie überprüfe ich, ob eine Datei in einer Fernbedienung existiert?
- 7. Wie überprüfe ich eine bestimmte Datei zu einem bestimmten Zeitpunkt in eine andere Datei
- 8. Wie überprüfe ich, ob eine FormData-Datei leer ist?
- 9. Wie kann ich eine FactoryGirl-Datei in einen bestimmten Ordner erstellen?
- 10. Wie kann man überprüfen, ob eine Datei in einem bestimmten Ordner eines Android-Gerät vorhanden ist
- 11. Wie überprüfe ich, ob in einem CachedRowSet ein Spaltenname existiert?
- 12. Wie überprüfe ich, ob ein Schlüssel in einem Datensatz existiert?
- 13. Wie überprüfe ich, ob Server.GetLastError() = System.Web.UI.ViewStateException?
- 14. Wie überprüfe ich, ob eine Datei eine reguläre Datei in C++ ist?
- 15. Phonegap: Erstelle eine Datei in einem bestimmten Ordner
- 16. Wie überprüfe ich, ob eine Variable in Swift deklariert ist?
- 17. Wie überprüfe ich in Activiti, ob eine Variable gesetzt ist?
- 18. Wie überprüfe ich, ob ich in Python unter Windows laufe?
- 19. Wie überprüfe ich, ob eine Datei auf einem Remote-Server mit der Shell
- 20. Wie überprüfe ich, ob Code aus einem Nasentest ausgeführt wird?
- 21. Wie überprüfe ich, ob ein NSTimer läuft?
- 22. Wie überprüfe ich in Python, ob eine Variable existiert?
- 23. Wie überprüfe ich, ob eine Umgebungsvariable in PHP gesetzt ist?
- 24. Wie überprüfe ich, ob eine Variable in eex existiert?
- 25. Wie überprüfe ich, ob ein Objekt in einem bestimmten Index eines NSMutableArray existiert?
- 26. iOS Wie überprüfe ich, ob gerade telefoniert
- 27. Wie überprüfe ich, ob ein Verzeichnis in PHP beschreibbar ist?
- 28. Wie überprüfe ich, ob session_start eingegeben wurde?
- 29. Wie überprüfe ich, ob Bitmaske Bit enthält?
- 30. Wie komme ich in einen bestimmten Ordner?
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. –
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. –