leitura e gravação simultânea de um arquivo em C #
Eu tenho um arquivo contendo dados nos quais eu gostaria de monitorar as alterações e também adicionar as minhas. Pense como "Tail -f foo.txt".
Baseado emesta discussão, parece que eu deveria apenas criar um fluxo de arquivos e transmiti-lo a um escritor e a um leitor. No entanto, quando o leitor chega ao final do arquivo original, ele falha ao ver as atualizações que eu mesmo escrevi.
Eu sei que parece uma situação estranha ... é mais um experimento para ver se isso pode ser feito.
Aqui está o exemplo de caso que tentei:
foo.txt:
a
b
c
d
e
f
string test = "foo.txt";
System.IO.FileStream fs = new System.IO.FileStream(test, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite);
var sw = new System.IO.StreamWriter(fs);
var sr = new System.IO.StreamReader(fs);
var res = sr.ReadLine();
res = sr.ReadLine();
sw.WriteLine("g");
sw.Flush();
res = sr.ReadLine();
res = sr.ReadLine();
sw.WriteLine("h");
sw.Flush();
sw.WriteLine("i");
sw.Flush();
sw.WriteLine("j");
sw.Flush();
sw.WriteLine("k");
sw.Flush();
res = sr.ReadLine();
res = sr.ReadLine();
res = sr.ReadLine();
res = sr.ReadLine();
res = sr.ReadLine();
res = sr.ReadLine();
Depois de passar por "f", o leitor retorna nulo.