我有一个MemoryStream / BinaryWriter,我用它如下:
memStram = new MemoryStream();
memStramWriter = new BinaryWriter(memStram);
memStramWriter(byteArrayData);
现在阅读我做以下事情:
byte[] data = new byte[this.BulkSize];
int readed = this.memStram.Read(data, 0, Math.Min(this.BulkSize,(int)memStram.Length));
我的2个问题是:
memStram.Position = 0; memStram.SetLength(0);
感谢。 约瑟夫
答案 0 :(得分:3)
答案 1 :(得分:2)
1:读完后,位置移到currentPosition + readed,memStram.Length会改变吗?
阅读通常不会更改.Length
- 仅.Position
;但严格来说,在阅读时(通常:写作时),.Length
和.Position
看是一个坏主意,因为所有流都不支持。通常,你读到(其中一个,取决于场景):
Read
返回非正值)我也可能会说:不要使用BinaryWriter
。仅仅使用Stream
添加它似乎没什么用处。
2:我想初始化流(就像我刚刚创建的那样),我可以使用Dispose再次使用新的,如果没有,那么有更快的方式比使用dispose& new:
是的,对于SetLength(0)
,MemoryStream
很好。在所有情况下都不一定好(例如,它在NetworkStream
上没有多大意义。)
答案 2 :(得分:2)
不会改变长度,您可以使用监视变量轻松检查
我会使用using
语句,因此语法会更加优雅和清晰,您不会忘记以后再处理它......