C# 随机存取流块存储器

C# 随机存取流块存储器,c#,azure,azure-blob-storage,C#,Azure,Azure Blob Storage,是否有一种方法可以直接创建到Azure Blob或Azure块存储Blob的流对象 即 这将允许一些很棒的交互,例如在azure blob中存储数据库索引,而不需要将它们拉到本地。不确定这是否回答了您的问题,但您可以从blob中读取一系列字节。直接使用RESTAPI时,可以在范围或x-ms-Range标题中指定要读取的字节 在使用C#SDK时,您可以使用以下方法: using (var ms = new MemoryStream()) {

是否有一种方法可以直接创建到Azure Blob或Azure块存储Blob的流对象


这将允许一些很棒的交互,例如在azure blob中存储数据库索引,而不需要将它们拉到本地。

不确定这是否回答了您的问题,但您可以从blob中读取一系列字节。直接使用RESTAPI时,可以在
范围
x-ms-Range
标题中指定要读取的字节

在使用C#SDK时,您可以使用以下方法:

        using (var ms = new MemoryStream())
        {
            long offset = 200;
            long bytesToRead = 1024;
            blob.DownloadRangeToStream(ms, offset, bytesToRead);
        }
如果您的问题是“我可以将流与Azure blob一起使用吗?”以避免需要在任何时间点将blob的整个大小保存在内存中,那么答案绝对是肯定的

例如,当读取块blob时,根据这一点,blob可以通过
CloudBlob.OpenReadAsync
等方法作为流句柄访问。默认缓冲区大小为4MB,但可以通过以下属性进行调整:。这里,我们将blob流复制到另一个打开的输出流:

using (var stream = await myBlockBlob.OpenReadAsync(cancellationToken))
{
    await stream.CopyToAsync(outputStream);
}
类似地,您也可以直接进入Blob存储:

 await blockBlob.UploadFromStreamAsync(streamToSave, cancellationToken);
 await blockBlob.UploadFromStreamAsync(streamToSave, cancellationToken);