2010-03-23 2 views
2

Я хочу одновременно читать и записывать данные в файл. Могу ли я использовать StreamReader и StreamWriter только с файлом? И почему код ниже не выводит цифры?одновременно читать и записывать данные в файл

var stream = new FileStream(path,FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite); 
var sw = new StreamWriter(stream); 
var sr = new StreamReader(stream); 


for(int i=0;i<10;i++) 
{ 
    sw.WriteLine(i); 
} 

stream.Seek(0,SeekOrigin.Begin); 
for(int i=0;i<10;i++) 
{ 
Console.WriteLine(sr.ReadLine()); 
} 

stream.Close(); 
+1

Вы должны закрыть свой поток в инструкции 'using'. – SLaks

+1

Будьте очень осторожны. Одно дело иметь два открытых файла FileStream в заданном файле, используя возможности совместного использования для чтения и записи операционной системы. Совсем другое дело в том, что StreamReader и StreamWriter обращаются к тому же экземпляру FileStream. Внутренняя буферизация в StreamReader и StreamWriter может дать вам неожиданные результаты, если вы попытаетесь чередовать порядок чтения и записи. – Josh

ответ

2

Вы должны Flush StreamWriter, чтобы заставить его на самом деле записать данные из своего внутреннего буфера в поток.
Кроме того, вы можете установить свойство AutoFlush объекта StreamWriter на true

Смежные вопросы