c# - Why this chunk reading code doesn't work? -
i don't know why, chunked upload doesn't work. first chunk read right, next chunks contain 0
.
/// <summary> /// gibt die bytesequenz des angeforderten chunks zurück /// </summary> /// <param name="chunknumber">die position des chunks im array</param> /// <returns>die bytesequenz des angeforderten chunks</returns> byte[] filetochunk(int chunknumber) { byte[] chunkbuffer = new byte[chunksize]; filestream filestream = new filestream( "c:\\users\\patrick\\downloads\\prog\\unityassets\\start.unitypackage" , filemode.open , fileaccess.read ); filestream.seek((chunknumber - 1) * chunksize, seekorigin.begin); while (filestream.read(chunkbuffer, 0, chunkbuffer.length) > 0); if ( filestream.position != filestream.length && filestream.position != filestream.position - 1 ) filestream.close(); homecoming chunkbuffer; }
so, number of chunk should extracted passed argument, , filestream.seek()
want go position of chunk asked. said, first phone call of method returns working chunk, other calls homecoming byte[]
- arrays filled 0
. chunksize
256kb (1024*256 bytes) , file want read has size of ~ 11 mb (= 11000kb), should split (int)math.ceiling((double)(file.filesize / chunksize))
parts.
what doing wrong?
according documentation, filestream.read
returns number of bytes read. next loop:
while (filestream.read(chunkbuffer, 0, chunkbuffer.length) > 0);
will run until end of stream. read chunk want should phone call method once:
filestream.read(chunkbuffer, 0, chunkbuffer.length);
also, consider using using
statement instead of manually closing file.
c# .net stream chunks
No comments:
Post a Comment