我正在使用 azure SDK Blob 客户端,并尝试按时间顺序(通过写入时间)迭代容器中的所有 Blob。
如果写入了新的 blob,我还想继续读取最新的 blob,并按时间顺序流式传输所有 blob,这可能吗?
我正在使用 Azure SDK Blob 客户端,并尝试按时间顺序(通过写入时间)迭代容器中的所有 Blob。
您可以使用下面的代码,使用 .NET 中的
Azure.Storage.Blobs
NuGet 包,按照上次修改时间的时间顺序列出容器中的所有 Blob。
代码:
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
public class Program
{
public static async Task Main(string[] args)
{
string connectionString = "xxxxxxx";
string containerName = "test";
await ListBlobsInChronologicalOrder(connectionString, containerName);
}
public static async Task ListBlobsInChronologicalOrder(string connectionString, string containerName)
{
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(containerName);
List<BlobItem> blobs = new List<BlobItem>();
await foreach (BlobItem blob in containerClient.GetBlobsAsync(BlobTraits.None, BlobStates.None))
{
blobs.Add(blob);
}
blobs = blobs.OrderByDescending(b => b.Properties.LastModified).ToList();
foreach (var blob in blobs)
{
Console.WriteLine($"Blob name: {blob.Name}, Last modified: {blob.Properties.LastModified}");
}
}
}
上面的代码使用 Azure.Storage.Blobs 按上次修改时间的时间顺序列出了容器中的所有 Blob。它初始化 BlobServiceClient 和
BlobContainerClient
,并使用 GetBlobsAsync 列出 Blob。然后,它使用await foreach
语句对blob进行排序和打印。
输出:
Blob name: sample_files.mp4, Last modified: 29-02-2024 05:28:51 +00:00
Blob name: demo1.pdf, Last modified: 10-01-2024 13:04:01 +00:00
Blob name: demo1.mp4, Last modified: 10-01-2024 13:03:19 +00:00
Blob name: 1GB.bin, Last modified: 10-01-2024 12:22:41 +00:00
Blob name: demo.mp4, Last modified: 10-01-2024 11:59:56 +00:00
Blob name: demo1.docx, Last modified: 27-12-2023 10:35:11 +00:00
Blob name: sample7.mp4, Last modified: 11-12-2023 06:40:21 +00:00
Blob name: sample.pdf, Last modified: 05-12-2023 11:11:47 +00:00
Blob name: example.pdf, Last modified: 05-12-2023 11:11:46 +00:00
参考: