C# 随机存取流块存储器
是否有一种方法可以直接创建到Azure Blob或Azure块存储Blob的流对象 即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中存储数据库索引,而不需要将它们拉到本地。不确定这是否回答了您的问题,但您可以从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);