? Me pregunto si existe una forma mejor/incorporada, que no sea el uso de un búfer de bytes y un bucle, para leer de una secuencia y escribirla en otro (en .NET). En general, esto se hace para aplicar una transformación a una secuencia y continuar.¿Cuál es la mejor manera de hacer que la salida de una secuencia entre
En este caso, lo que yo estoy cargando un archivo, poniéndolo a través de una secuencia de deshinchado y escribirlo en un archivo (Gestión de errores eliminado por simplicidad):
byte[] buffer = new byte[10000000];
using (FileStream fsin = new FileStream(filename, FileMode.Open))
{
using (FileStream fsout = new FileStream(zipfilename, FileMode.CreateNew))
{
using (DeflateStream ds = new DeflateStream(fsout, CompressionMode.Compress))
{
int read = 0;
do
{
read = fsin.Read(buffer, 0, buffer.Length);
ds.Write(buffer, 0, read);
}
while (read > 0);
}
}
}
buffer = null;
Editar:
.NET 4.0 ahora tiene una función Stream.CopyTo, Hallelujah
Sí, lo haría esto si estábamos en 3.5. Generalmente lo colocamos en una biblioteca de métodos estáticos. –
De hecho, solía llamarse StreamCopier.Copy antes de 3.5 :-) –
Tenga en cuenta que está bien si está usando .NET 2.0, siempre y cuando esté usando C# 3. Puede seguir utilizando los métodos de extensión con un poco de engaño Consulte http://csharpindepth.com/Articles/Chapter1/Versions.aspx –