使用 .NET 将数据追加到追加 Blob

可以通过创建追加 blob 将数据追加到 blob。 与块 Blob 一样,追加 Blob 也由块构成,但针对追加操作进行了优化。 追加 Blob 非常适用于诸如记录来自虚拟机的数据之类的场景。

注意

本文中的示例假定你已使用开始使用 Azure Blob 存储和 .NET 一文中的指导创建了一个 BlobServiceClient 对象。 Azure 存储中的 Blob 已组织成容器。 必须先创建容器,才能上传 Blob。 若要了解如何创建容器,请参阅使用 .NET 在 Azure 存储中创建容器

创建追加 blob 并追加数据

使用这些方法创建追加 blob。

使用以下任一方法将数据追加到该追加 blob:

每个追加操作的最大大小(以字节为单位)由 AppendBlobMaxAppendBlockBytes 属性定义。 以下示例创建一个追加 blob,并将日志数据追加到该 blob。 此示例使用 AppendBlobMaxAppendBlockBytes 属性确定是否需要多个追加操作。

static async Task AppendToBlob(
    BlobContainerClient containerClient,
    MemoryStream logEntryStream,
    string logBlobName)
{
    AppendBlobClient appendBlobClient = containerClient.GetAppendBlobClient(logBlobName);

    await appendBlobClient.CreateIfNotExistsAsync();

    int maxBlockSize = appendBlobClient.AppendBlobMaxAppendBlockBytes;
    long bytesLeft = logEntryStream.Length;
    byte[] buffer = new byte[maxBlockSize];
    while (bytesLeft > 0)
    {
        int blockSize = (int)Math.Min(bytesLeft, maxBlockSize);
        int bytesRead = await logEntryStream.ReadAsync(buffer.AsMemory(0, blockSize));
        await using (MemoryStream memoryStream = new MemoryStream(buffer, 0, bytesRead))
        {
            await appendBlobClient.AppendBlockAsync(memoryStream);
        }
        bytesLeft -= bytesRead;
    }
}

请参阅