2014-02-03 2 views
0

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

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

+0

Используйте OpenTextFile, передавая параметр только для чтения, а затем используйте метод ReadAll. – Ben

+0

Вам необходимо установить 'FileAccess' в' FileAccess.Read' – Liam

+0

Ben: Проблема с OpenText заключается в том, что он предполагает кодировку UTF8 (как минимум, это говорит о документации) – Peter

ответ

1

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

Фактически вы можете выдавать ReadAllLines для файла только для чтения, несмотря на документацию MSDN.

-1

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

var content = new StreamReader("FilePath").ReadToEnd(); 
+0

будет иметь такую ​​же проблему, потому что файл только для чтения, и вы не указали флаг FileAccess. – Liam

+1

Эта ошибка не связана с ReadOnly, связана с тем, у кого есть разрешения на открытие папки или файла. Если пользователь, который пытается открыть, не имеет доступа, вы получите эту ошибку. Если файл ReadOnly не имеет значения для чтения. Если вы измените файл на другую папку с полными разрешениями, вы откроете его или предоставите разрешения для папки с текущим пользователем. –