wucher wichtel: Problem mit dem Zurücksetzen von Eigenschaften einer Datei

Hallo!

Ich probiere zur Zeit ein bisschen mit C#.NET rum. Dabei bin ich auf ein Problem gestoßen, das warscheinlich mir so in einigen anderen Sprachen auch begegnet wäre. Also bitte auch weiterlesen, wenn man C# nicht kennt, dafür aber VB, C, C++ o.ä.

Also: Ich möchte einfach die entsprechenden FileAttributes wieder rückgängig machen. Zum Beispiel die Eigenschaft ReadOnly setze ich so:

  
File.SetAttributes(path, FileAttributes.ReadOnly);  

Aber wie mache ich das wieder rückgängig? Es gibt ja leider kein NoReadOnly ;)

Für Hidden gibt es ja (scheinbar [siehe: Beispiel]) einen Ausweg (ist das Gegenteil von Hidden wirklich Archive?).

Ich könnte der Datei wieder die Eigenschaft Normal verpassen, aber das setzt alle Einstellungen zurück, die ich an der Datei verändert habe. Also z.B. Hidden und ReadOnly, obwohl ich nur ReadOnly zurücksetzen wollte.

Ich hoffe, es ist verständlich, was ich möchte und was das Problem ist. Auf jeden Fall danke für eure hilfreiche Antworten.

ciao, ww

--
Spiderpig, Spiderpig,
Does what ever a spiderpig does.
Can he swing, from a web?
No he cant, he's a pig.
Look out, he is a spiderpig
  1. Hallo ww,

    File.SetAttributes(path, FileAttributes.ReadOnly);

    Das wäre schonmal falsch, da Du dann die Attribute auf NUR ReadOnly setzt. Richtig wäre:

    File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);

    Für Hidden gibt es ja (scheinbar [siehe: Beispiel]) einen Ausweg (ist das Gegenteil von Hidden wirklich Archive?).

    Nein, der Code dort geht davon aus, dass die Attribute der Datei Archive | Hidden sind und damit Archive alleine das Hidden weg ist. Korrekt zum Entfernen von ReadOnly wäre:

    File.SetAttributes(path, File.GetAttributes(path) & ~FileAttributes.ReadOnly);

    Für Hidden natürlich genauso.

    Viele Grüße,
    Christian

    1. Hallo!

      Danke für deine schnelle und vorallem hilfreiche Antwort :)

      File.SetAttributes(path, FileAttributes.ReadOnly);

      Das wäre schonmal falsch, da Du dann die Attribute auf NUR ReadOnly setzt. Richtig wäre:

      Danke, aber das war nur ein Beispiel. Im Original habe ich es richtig stehen.

      Nein, der Code dort geht davon aus, dass die Attribute der Datei Archive | Hidden sind und damit Archive alleine das Hidden weg ist.

      Tut mir leid, aber das verstehe ich nicht :(

      Korrekt zum Entfernen von ReadOnly wäre:

      File.SetAttributes(path, File.GetAttributes(path) & ~FileAttributes.ReadOnly);

      Cool! Danke schön :-)

      ciao, ww

      --
      Spiderpig, Spiderpig,
      Does what ever a spiderpig does.
      Can he swing, from a web?
      No he cant, he's a pig.
      Look out, he is a spiderpig
      1. Hallo ww,

        Nein, der Code dort geht davon aus, dass die Attribute der Datei Archive | Hidden sind und damit Archive alleine das Hidden weg ist.

        Tut mir leid, aber das verstehe ich nicht :(

        Ok, der Code, der da im Beispiel der MSDN vorhanden ist (der übrigens aus genau diesem Grund nicht besonders pädagogisch hilfreich ist), geht von folgendem aus:

        Zustand der Datei VORHER:
           [ ] System
           [X] Hidden
           [ ] Read Only
           [X] Archive
           [ ] Sonstiges

        Jetzt setzt der Code die Attribute auf Archive, also:

        Zustand der Datei VORHER:
           [ ] System
           [ ] Hidden
           [ ] Read Only
           [X] Archive
           [ ] Sonstiges

        Damit ist EFFEKTIV das Hidden-Flag weg - für DIESEN FALL.

        ALLERDINGS: Wenn die Datei VORHER so ausähe:

        Zustand der Datei VORHER:
           [X] System
           [X] Hidden
           [X] Read Only
           [ ] Archive
           [ ] Sonstiges

        Dann würde der Code im Beispiel nicht nur Hidden wegnehmen, sondern zusätzlich auch System und Read Only *UND* dann noch Archive setzen.

        Alle Unklarheiten beseitigt?

        Viele Grüße,
        Christian

        1. Hallo!

          Alle Unklarheiten beseitigt?

          Wunderbar! Danke schön. Ich habe alles verstanden. Danke :)

          ciao, ww

          --
          Spiderpig, Spiderpig,
          Does what ever a spiderpig does.
          Can he swing, from a web?
          No he cant, he's a pig.
          Look out, he is a spiderpig