Feedback

C# - Ist Datei beschreibbar

Veröffentlicht von am 5/17/2010
(3 Bewertungen)
Eine kleine Methode, mit der man abfragen kann, ob eine Datei beschreibbar ist. Damit kann man unter anderem raus finden, ob die Datei im Zugriff ist.
public static bool IsFileWritable(string path)
        {
            try
            {
                if (!File.Exists(path))
                {
                    return true;
                }

                using (System.IO.FileStream stream = File.OpenWrite(path))
                {
                    stream.Close();
                }

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
Abgelegt unter Datei, Zugriff, beschreibbar.

8 Kommentare zum Snippet

keco schrieb am 5/17/2010:
Hallo, unter Windows Vista würde die Funktion wohl true zurückgeben, wenn ich als Dateipfad C:\myFile.txt angeben würde, sofern diese nicht vorhanden ist. Ich bin ziemlich sicher, dass es dabei Probleme geben wird, beim erstellen. Vielleicht sollte die Funktion entsprechend angepasst werden? Eine Möglichkeit wäre das erstellen und sofortige löschen der Datei. Wenig elegant. Vielleicht hilft es auch zu prüfen, ob der aktuelle Benutzer dafür Berechtigungen hat.
Firendeath schrieb am 5/18/2010:
Wäre das nicht eher :
public static bool IsFileWritable(string path)
{
try
{
if (!File.Exists(path))
{
return true;
}

FileStream stream = File.OpenWrite(path, FileMode.Open, FileAccess.Write);
stream.Close();

return true;
}
catch (Exception)
{
return false;
}
}
Christopher Kk schrieb am 5/18/2010:
Wenn es nur darum geht zu überprüfen warum checkt ihr das nicht so:

FileInfo inf = new FileInfo("test");

if(inf.IsReadOnly)
//dann ist sie nur lesbar.

Spart auf jedenfall dafür ne Exception zu bemühen und widerspricht auch dem Prinzip von Exceptions, weil das ja keine Ausnahme ist so ein Fall sondern was ganz normales.
Christopher Kk schrieb am 5/18/2010:
zu überprüfen ob die datei schreibar ist. Das meinte ich natürlich.
keco schrieb am 5/18/2010:
Gilt für das Dateiattribut "ReadOnly". Sichert aber nicht dagegen ab, ob ein E/A-Fehler auftreten kann, wofür die Fehlerbehandlung durchaus sinnvoll ist. Was sie prinzipiell bei jedem Schreib- und Lesevorgang ist.
Christopher Kk schrieb am 5/19/2010:
Jo das ist natürlich richtig. Deshalb schrieb ich ja auch "wenns nur darum geht zu prüfen ob die datei schreibrechte besitzt". Ansonsten haste Recht.
hackman schrieb am 5/21/2010:
dateistreams in einem using konstrukt verwenden!!!
(oder ein finally block einführen der die datei wieder schließt)

warum soll eine datei beschreibbar sein, wenn sie nicht existiert?! kann die datei erstellt werdeN?
bigdeak schrieb am 5/21/2010:
Danke erstmal für die Kommentare, ich werde den Snippet noch verbessern und anpassen.
 

Logge dich ein, um hier zu kommentieren!