C# Stream.Seek – 在流中定位

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技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • C# 定时器定时更新的简单实例

    C#定时器定时更新的简单实例 在C#中,我们可以使用定时器来定时执行某些操作。本文将介绍如何使用定时器定时更新,包括以下步骤: 创建WinForms应用程序 添加定时器控件 实现定时更新 1. 创建WinForms应用程序 首先,我们需要创建一个WinForms应用程序。可以使用Visual Studio创建一个新的WinForms应用程序。以下是具体步骤:…

    C# 2023年5月15日
    00
  • 基于C#制作一个飞机大战小游戏的全过程

    下面将详细讲解如何基于C#制作一个飞机大战小游戏的全过程。 第一步:游戏的框架搭建 在C#开发环境中新建一个空白项目,然后添加游戏画面的素材图片和背景音乐。接下来,我们需要编写游戏框架,包括游戏主循环和绘制游戏画面的代码。以下是一段示例代码: // 定义游戏主窗口 public class MainWindow : Form { // 定义画面控件 priv…

    C# 2023年6月7日
    00
  • C#在运行时动态创建类型的实现方法

    C# 在运行时动态创建类型的实现方法可以使用反射和 Emit 两种方式。以下是每种方式的详细说明: 反射方式 在 C# 中,可以使用 AssemblyBuilder、ModuleBuilder、TypeBuilder 等类来动态创建类型。具体步骤如下: 创建一个 AssemblyBuilder 对象,用于表示将要动态创建的程序集。可以使用 AppDomain…

    C# 2023年5月31日
    00
  • .NET Core部署到linux(CentOS)最全解决方案,常规篇

    本文为大家介绍使用 .NET Core部署到Linux服务器的方法,通过本文你将了解到Linux在虚拟机下的安装、Xshell,Xftp的使用方法、git在linux下的交互使用以及.net core在linux下的发布与运行全过程,本文皆在总结了一些经验与笔记在部署过程中遇到的一些问题,同时分享给大家,供大家参考,欢迎讨论交流。 1、Linux操作系统、X…

    C# 2023年4月28日
    00
  • ADO.NET实现对SQL Server数据库的增删改查示例

    下面是对“ADO.NET实现对 SQL Server 数据库的增删改查示例”的完整攻略: 什么是 ADO.NET? 先来简单介绍一下 ADO.NET。它是一个 Microsoft .NET Framework 中的数据访问技术,用于连接和管理与数据源的交互。ADO.NET 可以使用多种数据源,包括 SQL Server、Oracle、Access 等各种关系…

    C# 2023年6月2日
    00
  • MongoDB数据库介绍并用.NET Core对其进行编码

    MongoDB是一种文档数据库,它以BSON(二进制JSON)为数据存储格式,支持索引、联表查询和文档级锁定等特性。下面将为大家详细介绍MongoDB数据库,并提供两条.NET Core编码示例。 MongoDB数据库介绍 MongoDB的优点 数据以文档形式存储 BSON格式的数据存储格式 支持动态查询语言 可伸缩性强 可自身提供容错保护 支持二进制数据存…

    C# 2023年6月3日
    00
  • Ubuntu下VNC远程桌面的客户端和服务器端使用方法

    Ubuntu下VNC远程桌面的客户端和服务器端使用方法 客户端安装和配置 安装VNC Viewer客户端:在Ubuntu终端中输入以下命令进行安装: sudo apt-get update sudo apt-get install vncviewer 连接VNC服务器:在终端中输入VNC服务器的IP地址和端口号,例如: vncviewer 192.168.1…

    C# 2023年6月7日
    00
  • .NetCore基础之读取配置文件详解

    .NET Core基础之读取配置文件详解 在.NET Core应用程序中,我们可以使用配置文件来存储应用程序的配置信息。本攻略将详细介绍如何读取配置文件,并提供两个示例说明。 配置文件格式 在.NET Core应用程序中,我们可以使用多种格式的配置文件,包括JSON、XML、INI等。以下是一个简单的JSON格式的配置文件示例: { "Loggin…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部