gpt4 book ai didi

c# - 传递流的子序列而不将其内容复制到新实例中

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:14 26 4
gpt4 key购买 nike

假设我有以下方法:

void Upload(Stream stream)
{
// uploads the content of the specified stream somewhere
}

让我们进一步假设我有一些二进制文件 f ,其中包含一些我想使用上述方法上传的数据。但是:这不是我要上传的整个文件。只是f的一部分.更准确地说,所需数据从某个位置开始 s >= 0并在某个位置结束e <= f.Length .

有没有办法传递 Stream实例,从位置 s 开始, 长度为 e , 不复制 s 之间的所有字节和 e进入一个新的流实例?我问是因为有可能,那个文件 f很大,我不想对可能可用的 RAM 做出假设。

最佳答案

请考虑使用 Stream.CanSeek Property , Stream.Position Property , Stream.Seek Method “访问”流的特定部分。

要有一个具有适当长度的单独的 Stream 实例,似乎需要实现一个 SubStream 类——代表子流的包装器。以下引用资料可用于实现此类包装器:

  1. How to access part of a FileStream or MemoryStream, Social MSDN .
  2. How to expose a sub section of my stream to a user, Stackoverflow .

关于c# - 传递流的子序列而不将其内容复制到新实例中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30494541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com