Нет ... Если вы посмотрите на Reflector, то увидите, что в конце концов File.ReadLines
открывает FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 0x1000, FileOptions.SequentialScan);
So Общий доступ только для чтения.
(технически открываетсяStreamReader
с FileStream
, как описано выше)
Я добавлю, что создание статического метода для этого кажется детской игрой:
public static IEnumerable<string> ReadLines(string path)
{
using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 0x1000, FileOptions.SequentialScan))
using (var sr = new StreamReader(fs, Encoding.UTF8))
{
string line;
while ((line = sr.ReadLine()) != null)
{
yield return line;
}
}
}
Это возвращаетIEnumerable<string>
(что лучше, если в файле много тысяч строк, и вам нужно только проанализировать их по одной за раз).Если вам нужен массив, назовите его как ReadLines("myfile").ToArray()
, используя LINQ.
Обратите внимание, что логически, если файл изменяется «за его спиной (метода)», как все будет работать, совершенно не определено(это, вероятно, технически определено, но определение, вероятно, довольно длинное и сложное)