【发布时间】:2014-12-15 10:44:13
【问题描述】:
我正在读取和写入同一个 MemoryStream。
类似这样的东西(可能的编译错误):
MemoryStream stream = new MemoryStream();
stream.Write("1234",0,4);
stream.Position -= 4;
stream.Read(buffer,0,4);
为什么我必须移动位置?为什么读写不分开?
还有其他可以使用的Stream吗?
【问题讨论】:
-
您必须移动位置,因为这是流的工作方式,当您读取或写入位置时,位置会移动,因此如果您想读取或写入相同的部分两次,您必须将位置移回开始。为什么会出现这个问题?
-
请注意,这段代码甚至不会编译,因为
Stream.Write没有重载,它需要一个字符串... -
实际上,所有流的位置在您每次读取或写入时都会移动。我怀疑这也适用于所有语言,因为这是流定义的一部分:具有当前位置的数据序列,您可以通过读/写向前移动
-
@Ben Robinson 我将它用作队列。理想的选择是 Queue
,但是我需要把数据一个一个放。
标签: c#