Запись в файлы только для чтения

Я написал программу (c#.net 2.0), которая просматривает все ini-файлы в заданном каталоге и пытается заменить некоторые строковые шаблоны, если они найдены. Некоторые из этих файлов .ini доступны только для чтения, и их очень много.

Любые предложения о том, как лучше всего справиться с этим? Он будет использоваться в 32-битной среде win2k, win2k3 с установленной версией .net 2.0.


person cc0    schedule 06.12.2010    source источник
comment
Рассматривали ли вы удаление бита только для чтения при изменении файлов?   -  person cdhowie    schedule 06.12.2010
comment
Если файлы помечены операционной системой как доступные только для чтения, вы не можете записывать их без изменения этого атрибута.   -  person jvanrhyn    schedule 06.12.2010
comment
кажется, возможно, я мог бы использовать команду dos attr -r c:\directory*.ini, как мне реализовать это в коде С#?   -  person cc0    schedule 06.12.2010
comment
csharp-examples.net/file-attributes   -  person Christian Wattengård    schedule 06.12.2010


Ответы (2)


Измените атрибут только для чтения (вы можете сделать это, только если у вас есть правильные разрешения):

FileInfo myFile = new FileInfo(pathToFile);
myFile.IsReadOnly = false;

Теперь файл доступен для записи — см. документацию по IsReadOnly< /а> свойство.

person Oded    schedule 06.12.2010
comment
Идеально, как раз то, что я искал. Спасибо! - person cc0; 06.12.2010

Просто очистите атрибут ReadOnly

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

но сначала проверь есть ли он

bool isReadOnly = (File.GetAttributes(FilePath) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly;
person Jonas Elfström    schedule 06.12.2010
comment
Спасибо, сэр. Хорошо, что увидели и этот метод. - person cc0; 06.12.2010