下载和读取Azure Blob容器文件

问题描述 投票:0回答:1

这里是在C#中下载和读取Azure Blobs容器文件的示例。您将需要使函数async-await连接Azure Blobs容器并在本地下载blob文件,以读取这些文件并对其进行“处理”。在该示例中,我们找到大小恰好为11K bytes的小丑文件,并将小丑文件和其他文件中每个字符的ASCII值相加,并将小丑文件ASCII值与其他文件的ASCII值最后相乘。

c# async-await azure-devops azure-storage-blobs azure-container-service
1个回答
0
投票
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.