C#中“流中的位置”是什么意思?

时间:2011-11-07 13:41:31

标签: c#

我无法理解“流的位置”这个词。我的问题在某种程度上与流方法的概念有关 Seek();它对我这种方法的作用有点让人困惑,他们说它的目的是将流的位置设置为给定值,但其名称描述了搜索操作未设置操作。有谁清楚地理解这两个词是什么以及它们如何一起工作? Thanx

4 个答案:

答案 0 :(得分:4)

将文件视为一个字节序列,将一个流视为该序列的视图,并使用光标标记当前位置 - 因此当您读取数据时,光标会前进。 Position属性只是该游标的位置。因此,当您打开一个流时,它通常为0,当您阅读它时会增加。对于可搜索流,您可以使用

“快退”到流的开头
stream.Position = 0;

或者可以使用以下内容跳过10个字节:

stream.Position += 10;

答案 1 :(得分:2)

stream基本上是一个字节序列 - 位置是流所在序列中的点。

Seek的要点是“跳转”到流中的某个位置 - 特定索引(也称为位置),类似于在硬盘中执行的搜索。使用Seek,您可以指定偏移量来开始搜索,以便“跳转”多少字节。

答案 2 :(得分:1)

以下两个陈述完全相同:

s.Position = 100;
s.Seek(100, SeekOrigin.Begin);

它们都确定下一次读或写将发生的位置(作为字节数)。

Seek()名称非常古老。

答案 3 :(得分:0)

我实际上同意,乍一看,Seek并不是它的最佳名称。 SeekAndSetSeekAndMove会对我更有意义,因为这就是方法的作用 - 它在流中寻找您想要的位置并将光标设置到该位置。

但是,当您在计算机科学术语中考虑Seek与硬盘驱动器相关时,很明显这种方法的作用。它寻求并移动到这个位置。