public static async Task InitContainerAsync(string containerName, ILogger log) { log.LogInformation($"Start to init container: {containerName}"); string serviceEndpoint = string.Format("https://{0}.blob.core.windows.net/", Common.GetEnvironmentVariable("SA_NAME")); List <string> directories = new List <string> { "Incoming", "Ok", "Fail", "Report" }; try { foreach (var directory in directories) { DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClient(new Uri(serviceEndpoint), new DefaultAzureCredential()); DataLakeFileSystemClient dataLakeFileSystemClient = dataLakeServiceClient.GetFileSystemClient(containerName); DataLakeDirectoryClient dataLakeDirectoryClient = dataLakeFileSystemClient.GetDirectoryClient(directory); await dataLakeDirectoryClient.CreateIfNotExistsAsync(); log.LogInformation($"Initialisation complete: {containerName}"); } } catch (RequestFailedException) { log.LogInformation($"Failed to complete container initialisation operation: {containerName}"); throw; } }
static async Task UploadSampleDataIfNotExistsAsync(string localDirectory, DataLakeDirectoryClient directoryClient) { // Upload all sample data files in this directory foreach (string filePath in Directory.GetFiles(localDirectory)) { string fileName = Path.GetFileName(filePath); DataLakeFileClient fileClient = directoryClient.GetFileClient(fileName); if (!await fileClient.ExistsAsync()) { await fileClient.UploadAsync(filePath); } } // Recursively create subdirectories, and upload all sample data files in those subdirectories foreach (string directory in Directory.GetDirectories(localDirectory)) { string directoryName = Path.GetFileNameWithoutExtension(directory); DataLakeDirectoryClient subDirectoryClient = directoryClient.GetSubDirectoryClient(directoryName); await subDirectoryClient.CreateIfNotExistsAsync(); await UploadSampleDataIfNotExistsAsync(directory, subDirectoryClient); } }