Это все, что связано с семантикой блокировки и совместного использования, которую вы запрашиваете при открытии файла.
Вместо использования контекстного подхода File.ReadAllText()
, поищите в использовании System.IO.FileStream
и System.IO.StreamReader
/System.IO.StreamWriter
.
Чтобы открыть файл:
using (var fileStream = new FileStream(@"c:\myFile", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var streamReader = new StreamReader(fileStream))
{
var someText = streamReader.ReadToEnd();
}
Обратите внимание на FileShare.ReadWrite
- это говорят поток, чтобы позволить совместный доступ либо другим читателям или другим авторам.
Для написания попробовать что-то вроде
using (var fileStream = new FileStream(@"c:\myFile", FileMode.Create, FileAccess.Write, FileShare.Read))
using (var streamWriter = new StreamWriter(fileStream))
{
streamWriter.WriteLine("some text");
}
Обратите внимание на FileShare.Read
- это говорит поток, чтобы позволить совместный доступ только читателей.
Прочитайте об System.IO.FileStream
и перегрузите его конструктор, и вы сможете точно настроить, как он себя ведет в соответствии с вашими задачами.
Ваш второй блок кода говорит 'FileShare.Read', а не' FileShare.Write' –
@Matt Ellen. Исправлено - спасибо. –