In meiner .NET 2.0-Anwendung muss ich überprüfen, ob ausreichende Berechtigungen zum Erstellen und Schreiben von Dateien in ein Verzeichnis vorhanden sind. Zu diesem Zweck habe ich die folgende Funktion, die versucht, eine Datei zu erstellen und ein einzelnes Byte in sie zu schreiben. Anschließend löscht sie sich selbst, um zu testen, ob Berechtigungen vorhanden sind.
Ich dachte, der beste Weg, dies zu überprüfen, wäre, es tatsächlich zu versuchen und alle auftretenden Ausnahmen abzufangen. Ich bin jedoch nicht besonders glücklich über den allgemeinen Ausnahmefang. Gibt es also einen besseren oder vielleicht akzeptierteren Weg, dies zu tun?
private const string TEMP_FILE = "\\tempFile.tmp";
/// <summary>
/// Checks the ability to create and write to a file in the supplied directory.
/// </summary>
/// <param name="directory">String representing the directory path to check.</param>
/// <returns>True if successful; otherwise false.</returns>
private static bool CheckDirectoryAccess(string directory)
{
bool success = false;
string fullPath = directory + TEMP_FILE;
if (Directory.Exists(directory))
{
try
{
using (FileStream fs = new FileStream(fullPath, FileMode.CreateNew,
FileAccess.Write))
{
fs.WriteByte(0xff);
}
if (File.Exists(fullPath))
{
File.Delete(fullPath);
success = true;
}
}
catch (Exception)
{
success = false;
}
}