Feedback

C# - Schreibschutz einer Datei setzen / entfernen

Veröffentlicht von am 1/30/2007
(7 Bewertungen)
Setzt oder entfernt den Schreibschutz einer Datei.

benötigte Namespaces:
System.IO
/// <summary>
/// Sets the read only attribute.
/// </summary>
/// <param name="fullName">The full name.</param>
/// <param name="readOnly">if set to <c>true</c> [read only].</param>
private static void SetReadOnlyAttribute(string fullName, bool readOnly)
{
    FileInfo filePath = new FileInfo(fullName);
    FileAttributes attribute;
    if (readOnly)
        attribute = filePath.Attributes | FileAttributes.ReadOnly;
    else
        attribute = (FileAttributes) (filePath.Attributes - FileAttributes.ReadOnly);

    File.SetAttributes(filePath.FullName, attribute);
}
Abgelegt unter Datei, Schreibschutz, readonly.

3 Kommentare zum Snippet

Jürgen Gutsch schrieb am 9/26/2007:
cool, danke :-)
Patrick Roocks schrieb am 1/8/2008:
Soweit ich das nachvollziehen kann, arbeitet der "Minus"-Befehl nicht in gwünschter Weise - ist der ReadOnly Flag nicht gesetzt und wird die Funktion mit "false" aufgerufen, so ändert dieser Befehl andere Flags (hidden, etc...) So funktioniert es (und so arbeitet man imo mit Flags im Generellen):
attribute = filePath.Attributes & ~FileAttributes.ReadOnly;

(und so entfällt auch der Cast)
Flags sind binäre 0en oder 1en in einem Zahlenwert, möchte man einen Flag setzten, so verwendet man binäres Oder (ein |), dies ist im Snippet richtig. Möchte man einen Flag entfernen, so verwendet man binäres Und (ein |) mit der Negation des Flags, d.h. mit einer Kette von 1en die nur bei der gewünschten Stelle selbst eine 0 hat (man nennt das auch: Die übrigen 0en und 1en maskieren)
Günther Foidl schrieb am 11/23/2008:
Das ganze Snippet kann verkürzt werden indem das ReadOnly-Bit umgeschalten wird:

attribute ^= FileAttributes.ReadOnly;
 

Logge dich ein, um hier zu kommentieren!