Question

Je rencontre souvent le problème du fait que j'ai un flux de données plein et que je veux tout écrire dans un autre flux.

Tous les exemples de code utilisent un tampon sous la forme d'un tableau d'octets.

Existe-t-il une méthode plus élégante?

Sinon, quelle est la taille idéale du tampon? Quels facteurs constituent cette valeur?

Était-ce utile?

La solution

Concernant la taille de la mémoire tampon idéale:

"Lorsque vous utilisez la méthode Read, il est plus efficace d’utiliser un tampon de la même taille que le tampon interne du flux, le tampon interne étant défini sur la taille de bloc souhaitée, et de toujours lire moins de la taille du bloc. Si la taille du tampon interne n'était pas spécifiée lors de la construction du flux, sa taille par défaut est de 4 kilo-octets (4096 octets). "

Tout processus de lecture de flux utilisera Read (char buffer [], int index, count), méthode à laquelle cette citation fait référence.

http://msdn.microsoft.com/en-us/library/ 9kstw824.aspx (sous "Remarques").

Autres conseils

Dans .NET 4.0, nous avons finalement obtenu un Stream.CopyTo ! Yay!

Je ne sais pas si vous pouvez diriger directement un flux vers un autre dans .NET, mais voici une méthode pour le faire avec un tampon d'octets intermédiaire. La taille du tampon est arbitraire. La taille la plus efficace dépend principalement de la quantité de données que vous transférez.

static void CopyStream(Stream input, Stream output){
    byte[] buffer = new byte[0x1000];
    int read;
    while ((read = input.Read(buffer, 0, buffer.Length)) > 0) 
        output.Write(buffer, 0, read);
}

BufferedStream.CopyTo (flux)

Lire des données dans FileStream dans un flux générique

aura probablement quelques directions à suivre

Je ne connais pas de manière plus élégante que d'utiliser un tampon.

Mais la taille d'un tampon peut faire la différence. Vous vous souvenez des problèmes liés à la copie de fichiers de Vista? C'est la raison était (fondamentalement) de changer la taille de la mémoire tampon. Les modifications sont expliquées dans cet article de blog . Vous pouvez apprendre les principaux facteurs de ce post. Cependant, cela ne s'applique que pour la copie de fichiers. Dans les applications, vous effectuez probablement beaucoup de copies de la mémoire. Dans ce cas, la taille de mémoire tampon optimale est de 4 Ko. tel que recommandé par la documentation .NET .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top