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日

相关文章

  • ASP.Net中的async+await异步编程的实现

    下面我将为你详细讲解ASP.Net中的async+await异步编程的实现。 什么是异步编程 在了解异步编程实现之前,先来了解一下什么是异步编程。异步编程指的是不需要等待一个耗时操作完成就可以继续执行其他任务,使得程序不会被这个耗时操作所阻塞。异步编程在编写高性能、高并发的程序方面有很大的作用。 ASP.Net中的异步编程实现 在ASP.Net中,异步编程的…

    C# 2023年5月31日
    00
  • C# 以MDF文件链接数据库的示例代码

    下面是详细讲解 “C# 以MDF文件链接数据库的示例代码”的完整攻略: 一、前置条件 在编写 C# 代码之前,需要先安装 Microsoft SQL Server 以及 Visual Studio 等开发工具。安装步骤可以参考其官方文档进行。 二、创建 MDF 文件 在 SQL Server Management Studio 中创建一个新的数据库,设置其名…

    C# 2023年6月2日
    00
  • Ubuntu16.04系统配置.net core环境

    Ubuntu16.04系统配置.Net Core环境 在Ubuntu16.04系统中,可以通过以下步骤配置.Net Core环境。 1. 安装依赖 在Ubuntu16.04系统中,需要安装以下依赖才能安装.Net Core。可以按照以下步骤操作: 打开终端。 输入以下命令,安装依赖。 sudo apt-get update sudo apt-get inst…

    C# 2023年5月16日
    00
  • C# Linq的Sum()方法 – 计算序列中元素的总和

    首先我们来讲一下C# Linq中的Sum()方法。Sum()方法是用来计算序列中所有数值的和的方法,它可以用于数字类型(包括int、long、float、double等)或者是支持数值运算(例如加法)的自定义类型,但不包括bool类型。下面讲解一下具体用法和示例: 基本语法 序列.Sum([selector]) 其中,selector可以是一个Lambda表…

    C# 2023年4月19日
    00
  • ASP.NET Core读取配置文件

    ASP.NET Core 读取配置文件是一种非常常见的操作,可以用于配置应用程序的行为。以下是 ASP.NET Core 基础之读取配置文件的完整攻略: 步骤一:创建 ASP.NET Core 应用程序 首先,需要一个 ASP.NET Core 应用程序。可以使用以下命令在 Visual Studio 中创建一个 ASP.NET Core 应用程序: 打开 …

    C# 2023年5月17日
    00
  • C# DriveInfo.GetDrives – 获取所有的磁盘驱动器信息

    DriveInfo.GetDrives 方法是C#中 System.IO 命名空间中的一个方法,用于获取系统中所有的驱动器信息。其返回一个 DriveInfo 类型的数组,数组中包含了当前计算机中所有已存在的逻辑驱动器的信息,如磁盘的名称、大小、是否为只读等。 DriveInfo.GetDrives 方法的语法如下: public static DriveI…

    C# 2023年4月19日
    00
  • C#委托用法详解

    C#委托用法详解 什么是委托 在C#中,委托(Delegate)是一个类,它可以存储指向方法的引用。 委托是函数指针的一种抽象,它允许在运行时引用方法。使用委托来引用方法,可以让代码更加灵活,可以动态的改变调用的方法或函数,这也是委托的最大优点。 委托的声明格式: delegate 返回值类型 委托名称(参数列表); 委托的用途 委托的主要用途是事件处理,可…

    C# 2023年6月7日
    00
  • Unity 百度AI实现人像动漫化效果

    现在开始为大家讲解“Unity 百度AI实现人像动漫化效果”的完整攻略。 1. 实现思路 本例使用Unity结合百度AI实现人像动漫化。实现的主要思路如下: 在Unity中引入百度AI SDK,并完成配置; 将需要进行动漫化的人像照片上传至服务器; 使用百度AI的人像动漫化API来实现人像动漫化; 将动漫化后的图片下载回本地; 在Unity中加载并显示动漫化…

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