Согласно моему комментарию выше, File.Create(..)
возвращает объект FileStream
, который не будет уничтожен, пока метод не будет закрыт (что означает, что дескриптор все еще открыт, таким образом, файл все еще заблокирован).Когда вы пытаетесь использовать WriteAllLines
, он пытается открыть новый дескриптор и терпит неудачу, потому что он уже открыт.
Вы можете использовать код, подобный следующему, который отлично работает (только что протестировано):
List<string> lines1 = new List<string>();
string path1 = @"C:\Development\test1.txt";
for (int i = 0; i < 20; i++)
lines1.Add("Test " + i);
TextWriter textWriter = new StreamWriter(File.Create(path1));
foreach(string line in lines1)
textWriter.WriteLine(line);
textWriter.Close();
Приведенный выше код будет использовать тот же поток, который был создан при создании файла, поэтому у вас нет шансов на столкновение.
В качестве альтернативы, как и в других ответах, метод File.WriteAllLines
создастфайл для вас в любом случае!