2010-03-23 6 views
2

Je veux simultanément lire et écrire des données dans le fichier. Puis-je utiliser StreamReader et StreamWriter avec un seul fichier? Et pourquoi le code ci-dessous ne contient pas de chiffres?simultanément lire et écrire des données dans le fichier

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

Vous devez fermer votre flux dans une instruction 'using'. – SLaks

+1

Faites très attention ici. C'est une chose d'avoir deux FileStreams ouverts sur un fichier donné en utilisant les fonctions de partage en lecture/écriture du système d'exploitation. C'est tout à fait différent d'avoir StreamReader et StreamWriter accédant à la même instance de FileStream. La mise en mémoire tampon interne dans StreamReader et StreamWriter peut vous donner des résultats inattendus si vous essayez d'entrelacer l'ordre de vos lectures et de vos écritures. – Josh

Répondre

2

Vous devez Flush le StreamWriter pour le forcer à écrire réellement les données de sa mémoire tampon interne au courant.
Vous pouvez également définir la propriété AutoFlush de StreamWriter sur true

Questions connexes