如何下载和读取Azure blob容器文件[关闭]

问题描述 投票:0回答:1
我需要从Azure blob容器中下载所有文件,然后逐个读取文件以找到所有ASCII字符值的总和。
c# async-await azure-devops azure-storage-blobs azure-container-service
1个回答
0
投票
这里是使用C#下载和读取Azure Blob容器文件的示例。您将需要使函数async-await连接Azure Blobs容器并在本地下载blob文件,以读取这些文件并对其执行“某些操作”。在该示例中,我们找到大小恰好为11K bytes的小丑文件,并将小丑文件和其他文件中每个字符的ASCII值相加,并将小丑文件ASCII值与其他文件的ASCII值最后相乘。

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models; namespace myApp { class Program { static async Task Main(string[] args) { /********************************************************************************************** * Sum the ASCII value - find the joker (228326687915660 = 329081602*693830) ***********************************************************************************************/ Uri blobContainerUri = new Uri("blob-container-uri-find-the-joker"); BlobContainerClient blobContainerClient = new BlobContainerClient(blobContainerUri, null); string localPath = "./data/"; ulong sumASCIIValue = 0ul; ulong sumJokerASCIIValue = 0ul; await foreach (var blob in blobContainerClient.GetBlobsAsync()) { string fileName = blob.Name; string localFilePath = Path.Combine(localPath, fileName); using (var file = File.Open(localFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { var blobClient = blobContainerClient.GetBlobClient(blob.Name); await blobClient.DownloadToAsync(file); if (file.CanRead) { file.Position = 0; byte[] readBytes = new byte[file.Length]; // Detect joker file if (file.Length >= 11000) { while (file.Read(readBytes, 0, readBytes.Length) > 0) { string asciiString = System.Text.Encoding.ASCII.GetString(readBytes); foreach (Char chr in asciiString) { sumJokerASCIIValue += (ulong)chr; } } } else { while (file.Read(readBytes, 0, readBytes.Length) > 0) { string asciiString = System.Text.Encoding.ASCII.GetString(readBytes); foreach (Char chr in asciiString) { sumASCIIValue += (ulong)chr; } } } } } Console.WriteLine("File Read: {0} sumASCIIValue: {1}, sumJokerASCIIValue: {2}", fileName, sumASCIIValue, sumJokerASCIIValue); } Console.WriteLine("ASCII value: {0}", sumASCIIValue * sumJokerASCIIValue); } } }

© www.soinside.com 2019 - 2024. All rights reserved.