我无法理解“流的位置”这个词。我的问题在某种程度上与流方法的概念有关 Seek();它对我这种方法的作用有点让人困惑,他们说它的目的是将流的位置设置为给定值,但其名称描述了搜索操作未设置操作。有谁清楚地理解这两个词是什么以及它们如何一起工作? Thanx
答案 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
并不是它的最佳名称。 SeekAndSet
或SeekAndMove
会对我更有意义,因为这就是方法的作用 - 它在流中寻找您想要的位置并将光标设置到该位置。
但是,当您在计算机科学术语中考虑Seek与硬盘驱动器相关时,很明显这种方法的作用。它寻求并移动到这个位置。