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]

Visual Studio Team Foundation Server 2017/2015 (TFS) für Administratoren - Kompakt

Nach dieser Schulung beherrschen Sie die Grundlagen des TFS. Sie erledigen administrative Aufgaben schnell und sicher.

VB.NET Aufbau

Sie verfügen nach der Schulung über fundierte Kenntnisse in der Arbeit mit objektorientierten Modellen in VB.NET und können wiederverwendbare Komponenten eigenständig erzeugen.

/// <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!