Как использовать File.ReadAllLines для чтения файла с атрибутом ReadOnly?

Я использую File.ReadAllLines для чтения содержимого текстового файла. Но если файл имеет свойство ReadOnly или если у пользователя нет разрешения на запись в файл, то метод ReadAllLines выдает исключение, в котором говорится: «Доступ к пути 'path-to-file' запрещен».

Есть ли способ использовать File.ReadAllLines и прочитать содержимое файла ReadOnly?


person Peter    schedule 03.02.2014    source источник
comment
Используйте OpenTextFile, передав параметр только для чтения, а затем используйте метод ReadAll.   -  person Ben    schedule 03.02.2014
comment
Вам необходимо установить FileAccess на FileAccess.Read   -  person Liam    schedule 03.02.2014
comment
Бен: Проблема с OpenText в том, что он предполагает кодировку UTF8 (по крайней мере, так говорится в документации).   -  person Peter    schedule 03.02.2014
comment
Лиам: ReadAllLines нигде не ссылается на FileAccess.   -  person Peter    schedule 03.02.2014


Ответы (2)


Прошу прощения - меня ввела в заблуждение документация MSDN, в которой говорится, что исключение UnauthorizedAccessException возникает, когда аргумент path, переданный методу, указывает файл, доступный только для чтения.

Фактически, вы МОЖЕТЕ выдать ReadAllLines для файла, доступного только для чтения, несмотря на документацию MSDN.

person Peter    schedule 03.02.2014

Почему бы не попробовать читать с StremReader:

var content = new StreamReader("FilePath").ReadToEnd();
person Miguel Angel Utiel Peñaranda    schedule 03.02.2014
comment
это будет иметь ту же проблему, потому что файл доступен только для чтения, и вы не указываете флаг FileAccess. - person Liam; 03.02.2014
comment
Эта ошибка не связана с ReadOnly, связана с тем, у кого есть разрешения на открытие папки или файла. Если у пользователя, который пытается открыть, нет доступа, вы получите эту ошибку. Если файл является ReadOnly, не имеет значения для чтения. Если вы измените файл в другую папку с полными разрешениями, вы откроете его или предоставите разрешения для папки с текущим пользователем. - person Miguel Angel Utiel Peñaranda; 03.02.2014