什么是“;流中的位置”;C#中的平均值

本文关键字:平均值 位置 什么 | 更新日期: 2023-09-27 18:13:56

我很难理解单词">流的位置"。我的问题在某种程度上与流方法的概念有关Seek((;我有点困惑这个方法的作用,他们说它的目的是将流的位置设置为给定的值,但它的名称描述了查找操作而不是设置操作。有人清楚地理解这两个词的含义以及它们是如何结合在一起的吗?Thanx

什么是“;流中的位置”;C#中的平均值

将文件视为一个字节序列,将流视为该序列上的视图,光标标记当前位置,这样在读取数据时,光标就向前移动了。Position属性只是该光标的位置。因此,当你打开一个流时,它通常为0,并且随着你的阅读,它会增加。对于可查找的流,您可以使用"倒带"到流的开头

stream.Position = 0;

或者使用跳过10个字节

stream.Position += 10;

等等。

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

Seek的目的是"跳转"到流中的一个位置——一个特定的索引(也称为位置(,类似于在硬盘驱动器中进行的查找。使用Seek,您可以指定一个偏移量来开始查找,以及要"跳转"的字节数。

以下两个语句的作用完全相同:

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

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

Seek()的名字非常古老。

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

然而,当你把计算机科学中的Seek与硬盘驱动器联系起来时,这种方法的作用就显而易见了。它寻找并移动到该位置。

此外,对于具有NAudio的记录,它过去也是stream.GetPosition()。此后,它仅更改为stream.Position