123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- using Azure.Storage.Blobs;
- using Azure.Storage.Blobs.Models;
- using Azure.Storage.Blobs.Specialized;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace BlobDownload
- {
- public class Program
- {
- static async Task Main(string[] args)
- {
- string StorageAccountConnectionString = "DefaultEndpointsProtocol=https;AccountName=teammodelstorage;AccountKey=Yq7D4dE6cFuer2d2UZIccTA/i0c3sJ/6ITc8tNOyW+K5f+/lWw9GCos3Mxhj47PyWQgDL8YbVD63B9XcGtrMxQ==;EndpointSuffix=core.chinacloudapi.cn";
- BlobServiceClient blobServiceClient = new BlobServiceClient(StorageAccountConnectionString);
- BlobContainerClient blobContainerClient = new BlobContainerClient(StorageAccountConnectionString, "hbcn");
- //BlobClient blob = blobContainerClient.GetBlobClient("res/PRD-20191015001/index.json");
- //await blob.DownloadToAsync(@"D:\VisualStudioProjects\TEAMModelOS\BlobDownload\download\index.json");
- string downloadpath = "F:/download";
- HashSet<string> pathset = new HashSet<string>();
- List<string> items = new List<string>();
- int count = 0;
- await foreach (BlobItem item in blobContainerClient.GetBlobsAsync(BlobTraits.None, BlobStates.None, "res/PRD-20191015002"))
- {
- string path = Path.Combine(downloadpath, item.Name);
- var paths= path.Split("/");
- StringBuilder stringBuilder = new StringBuilder();
- for (int i = 0; i < paths.Length-1; i++) {
- stringBuilder.Append($"{paths[i]}/");
- }
- pathset.Add(stringBuilder.ToString());
- count++;
- items.Add(item.Name);
- }
- foreach (var path in pathset) {
- if (!Directory.Exists(path)) {
- Directory.CreateDirectory(path);
- }
- }
- List<Task> tasks = new List<Task>();
- long start= DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
- foreach (var item in items)
- {
- BlobClient blob = blobContainerClient.GetBlobClient(item);
- string path = Path.Combine(downloadpath, item);
-
- tasks.Add(blob.DownloadToAsync(path));
- }
- await Task.WhenAll(tasks);
- long end = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
- Console.WriteLine($"文件个数:{count};下载时间:{end-start}毫秒");
- }
- }
- }
|