Aquí dice msdn.microsoft.com/en-us/library/system.io.stream.read.aspx que los métodos Stream.Read
y Stream.Write
adelantan la posición/desplazamiento en la secuencia automáticamente, por lo que ¿Por qué los ejemplos están aquí http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx y http://msdn.microsoft.com/en-us/library/system.io.filestream.read.aspx cambiando manualmente el desplazamiento?Configuración del desplazamiento en una secuencia
¿Solo establece el desplazamiento en un bucle si conoce el tamaño del flujo y lo establece en 0 si no conoce el tamaño y utiliza un búfer?
// Now read s into a byte buffer.
byte[] bytes = new byte[s.Length];
int numBytesToRead = (int) s.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
// Read may return anything from 0 to 10.
int n = s.Read(bytes, numBytesRead, 10);
// The end of the file is reached.
if (n == 0)
{
break;
}
numBytesRead += n;
numBytesToRead -= n;
}
y
using (GZipStream stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress))
{
const int size = 4096;
byte[] buffer = new byte[size];
using (MemoryStream memory = new MemoryStream())
{
int count = 0;
do
{
count = stream.Read(buffer, 0, size);
if (count > 0)
{
memory.Write(buffer, 0, count);
}
}
while (count > 0);
return memory.ToArray();
}
}
.. ¿Qué? –
Existe una diferencia entre los desplazamientos internos en un flujo y los desplazamientos/longitudes que necesita importar cuando lee/escribe datos entre un búfer y una secuencia, y tal vez un 2. flujo. – nos
@sehe: culpe a su sistema operativo. –