vtortola.Net

Mayo 9, 2007

Leyendo datos binarios en C#

Archivado en: .NET, C#, Input Output — vtortola @ 8:44 am
Este artículo es una traducción de Reading binary data in C# de Jon Skeet, el cual me ha dado su consentimiento expreso para traducirlo y ponerlo aquí.
Thanks Jon ;)

En los newsgroup de C#, he visto bastantes veces código para leer datos de un archivo como este:

// Mal método! No lo uses!
FileStream fs = File.OpenRead(filename);
byte[] data = new byte[fs.Length];
fs.Read(data, 0, data.Length);

Este código esta lejos de garantizar su funcionamiento. En concreto, FileStream podría estar leyendo solo los primeros 10bytes del archivo en el buffer. El método Read solo está garantizado para bloquear hasta que alguna porción de datos esta disponible (o el final del stream, si se alcanzó), no hasta que la totalidad de los datos están disponibles. Aquí es donde el valor de retorno (el cual es ignorado en el código de arriba) es vital. Necesitas arreglártelas para el caso en que no puedas leer todos los datos en la misma pasada, y hacer un bucle hasta que hayas leído todo lo quieres. Aquí un método que puedes usar si quieres leer desde un stream a un array sin parar hasta que este haya finalizado:
(más…)

Blog de WordPress.com.