Stream.Seek 方法用于在流中寻找具有给定偏移量的位置,并将流的读/写指针移动到该位置。Seek 方法可用于在文件中进行定位,以便读取或写入指定位置的数据。
使用方法
方法签名
public virtual long Seek(long offset, SeekOrigin origin);
参数含义
offset
:偏移量。它表示要在流内移动的字节数。origin
:一个 SeekOrigin 枚举值,指定字节偏移量是相对于流的开头、当前位置还是结尾。
枚举值 | 含义 |
---|---|
Begin |
偏移量相对于流的开头。 |
Current |
偏移量相对于流中的当前位置。 |
End |
偏移量相对于流的结尾。 |
返回值
返回新的流位置。
示例说明
示例一:从 stream 开始处移动 10 个字节
using System;
using System.IO;
using System.Text;
class Program
{
static void Main(string[] args)
{
string s = "Hello, world!";
Console.WriteLine($"原始字符串:{s}");
byte[] bytes = Encoding.Default.GetBytes(s);
MemoryStream stream = new MemoryStream(bytes);
int offset = 10;
long newPosition = stream.Seek(offset, SeekOrigin.Begin);
byte[] buffer = new byte[bytes.Length - offset];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string substring = Encoding.Default.GetString(buffer);
Console.WriteLine($"新字符串:{substring}");
stream.Close();
}
}
示例二:从 stream 的结束处倒退 10 个字节
using System;
using System.IO;
using System.Text;
class Program
{
static void Main(string[] args)
{
string s = "Hello, world!";
Console.WriteLine($"原始字符串:{s}");
byte[] bytes = Encoding.Default.GetBytes(s);
MemoryStream stream = new MemoryStream(bytes);
int offset = 10;
long newPosition = stream.Seek(-offset, SeekOrigin.End);
byte[] buffer = new byte[bytes.Length - newPosition];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string substring = Encoding.Default.GetString(buffer);
Console.WriteLine($"新字符串:{substring}");
stream.Close();
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# Stream.Seek – 在流中定位 - Python技术站