2011-11-10 8 views
16

Jeśli File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly); ustawia plik jako tylko do odczytu, jak ustawić go z powrotem w trybie do odczytu/zapisu, jeśli trzeba?C# make plik do odczytu/zapisu z readonly

Podejrzewam, że będzie to FileAttributes.Normal, ale czy to zmieni jakiekolwiek inne właściwości pliku? Na stronie MSDN nie ma opisowej notatki ...

Plik jest normalny i nie ma innych atrybutów. Ten atrybut jest ważny tylko wtedy, gdy jest używany samodzielnie.

Dzięki

Odpowiedz

36

Aby usunąć tylko atrybut ReadOnly, chcesz zrobić coś takiego:

File.SetAttributes("C:\\myfile.txt", File.GetAttributes("C:\\myfile.txt") & ~FileAttributes.ReadOnly); 

To usunie atrybut ReadOnly, ale zachować wszelkie inne atrybuty, które już istnieją w plik.

+0

Zgaduję, że '~' odwraca atrybut? –

+2

Dosyć - operator '~' zwraca bitowe dopełnienie danej wartości. Semantycznie, co powyżej mówi, "Ustaw atrybuty pliku' myfile.txt' na atrybuty 'myfile.txt' * za wyjątkiem atrybutu ReadOnly *." – matt

+0

ok genialny! :) thanks –

8

File.SetAttributes zastępuje WSZYSTKIE atrybuty w pliku.

Właściwym sposobem ustawiania i usuwania atrybutów jest najpierw pobranie atrybutów, zastosowanie zmian i ustawienie ich.

np.

var attr = File.GetAttributes(path); 

// set read-only 
attr = attr | FileAttributes.ReadOnly; 
File.SetAttributes(attr); 

// unset read-only 
attr = attr & ~FileAttributes.ReadOnly; 
File.SetAttributes(attr);