Tengo una lista de archivos, y necesito leerlos en un orden específico en bytes [] de un tamaño determinado. Esto en sí mismo no es un problema para un solo archivo, un simple mientras que ((got = fs.Read (piece, 0, pieceLength))> 0) hace el trabajo perfectamente bien. La última parte del archivo puede ser más pequeña que lo deseado, lo cual está bien.¿Hay una forma incorporada de manejar archivos múltiples como una secuencia?
Ahora, hay un truco: si tengo varios archivos, necesito tener una transmisión continua, lo que significa que si la última parte de un archivo es más pequeña que esa pieza, entonces necesito leer (pieceLength-got) del siguiente archivo, y luego continúe hasta el final del último archivo.
Esencialmente, dado X archivos, siempre leeré piezas que son exactamente largas, excepto la última parte del último archivo, que puede ser más pequeño.
Me pregunto si ya hay algo de compilación en .net (3.5 SP1) que lo solucione. Mi enfoque actual es crear una clase que tome una lista de archivos y luego expone una función Read(byte[] buffer, long index, long length)
, similar a FileStream.Read(). Esto debería ser bastante sencillo porque no tengo que cambiar mi código de llamada que lee los datos, pero antes de reinventar la rueda solo me gustaría verificar que la rueda no esté incorporada en el BCL.
Gracias :)
que en realidad es bastante buena forma, no estoy seguro todavía apenas si quiero implementar mi propia transmisión En lugar de un IEnumerable, un también podría funcionar, porque entonces mi CombinationStream tiene control total sobre las "corrientes internas". Pensaré en cuál enfoque me conviene más. –