【发布时间】:2012-04-27 13:20:41
【问题描述】:
我试图通过将部分读入字节数组来将内存流分成块,但我认为我有一些根本性的错误。我可以读取第一个块,但是当我尝试读取内存流的其余部分时,即使有更多字节要读取,我也会使索引超出范围。似乎问题在于接收字节缓冲区的大小需要与内存流一样大。我需要将其转换为块,因为代码位于 Web 服务中。
任何人都知道这段代码有什么问题
fb.buffer 是 MemoryStream
long bytesLeft = fb.Buffer.Length;
fb.Buffer.Position = 0;
int offset =0;
int BUFF_SIZE = 8196;
while (bytesLeft > 0)
{
byte[] fs = new byte[BUFF_SIZE];
fb.Buffer.Read(fs, offset, BUFF_SIZE);
offset += BUFF_SIZE;
bytesLeft -= BUFF_SIZE;
}
【问题讨论】:
-
其实这里甚至不需要使用
Read;只需使用GetBuffer,然后在循环中,Buffer.BlockCopy将数据从后备缓冲区传输到较小的缓冲区
标签: c# arrays .net-core memorystream chunks