问题
I currently have a memorystream with length of about 30000
(Named memStream here
)
I wished to read this memorystream in chunks
using the following code (I picked up on the net and modified somewhat):
byte[] chunk = new byte[4096];
bool hasNext = true;
while(hasNext)
{
int index = 0;
while (index < chunk.Length)
{
int bytesRead = memStream.Read(chunk, index, chunk.Length - index);
if (bytesRead == 0)
{
break;
}
index += bytesRead;
//Do something with this chunk
}
if (index != 0) // Our previous chunk may have been the last one
{
//Do something with the last chunk
}
if (index != chunk.Length) // We didn't read a full chunk: we're done
{
hasNext = false;
}
}
yet the following read()
method doesn't appear to be working
int bytesRead = memStream.Read(chunk, index, chunk.Length - index);
WHERE
chunk: new byte[4096]
index: 0
memstream: capacitiy & length : 34272
memstream: position 0 (according to VS watch)
Always returns
0 bytesRead
Chunk with all values containing '0'
Any idea why? Could this be a rights permission?
Thank you for your time.
回答1:
After creating and filling the MemoryStream, you need to set the read position to the begining like so:
memStream.Seek(0, SeekOrigin.Begin);
来源:https://stackoverflow.com/questions/26882038/memorystream-read-always-returns-0-bytesread-with-empty-byte