Feedback

C# - Schreibschutz einer Datei setzen / entfernen

Veröffentlicht von am 30.01.2007
(7 Bewertungen)
Setzt oder entfernt den Schreibschutz einer Datei.

benötigte Namespaces:
System.IO
GFU-Schulungen  [Anzeige]

JavaScript für .NET-Entwickler

Sie sind .NET-Entwickler und nun stehen Sie vor der Aufgabe, JavaScript in Ihre Arbeit einzubinden. Die Schulung vermittelt Ihnen die JavaScript Grundlagen und die Funktionen der Scriptsprache. Sie wissen, wie objektorientierte Programmierung in JavaScript funktioniert und lernen abschließend Best Practicies Fälle kennen.

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

/// <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 26.09.2007:
cool, danke :-)
Patrick Roocks schrieb am 08.01.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 23.11.2008:
Das ganze Snippet kann verkürzt werden indem das ReadOnly-Bit umgeschalten wird:

attribute ^= FileAttributes.ReadOnly;
 

Logge dich ein, um hier zu kommentieren!