public static bool DownloadFileShare(string localFolder) { try { CloudFileShare share = GetFileShare(); List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; Task.Run(async() => { do { FileResultSegment resultSegment = await share.GetRootDirectoryReference().ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); }); } catch (Exception ex) { if (_feedback != null) { _feedback.OnException(fileClient, ex); } return(false); } return(true); }
public async Task <List <string> > GetPatients(int maxPatients = 0) { var ret = new List <string>(); int numPatients = 0; FileContinuationToken token = null; try { do { FileResultSegment resultSegment = await PatientDirectory.ListFilesAndDirectoriesSegmentedAsync(token); foreach (var item in resultSegment.Results) { string filename = System.IO.Path.GetFileName(item.Uri.LocalPath); if (item.Uri.Segments.Last().Contains(".json") && !item.Uri.Segments.Last().Contains("hospitalInformation")) { ret.Add(item.Uri.Segments.Last()); numPatients++; } if (maxPatients != 0 && numPatients >= maxPatients) { return(ret); } } token = resultSegment.ContinuationToken; }while (token != null); } catch (Exception ex) { Console.WriteLine(ex.Message); } return(ret); }
private static async Task refineLogs() { StorageConnection conn = new StorageConnection(); string connectionString = "DefaultEndpointsProtocol=https;AccountName=storageaccountgepte86f5;AccountKey=tWMNBa2qlEgVEt6cOnmDbYdsJ0igQmnmJzcJx2d5lxuf0y1iYyMEbkM9n8KlUfPvlSF9Mtc3KE5CrhAWy/fpAg==;EndpointSuffix=core.windows.net"; conn.config = new MyConfig() { StorageConnection = connectionString, Container = "techathoninput" }; conn.Connect(); CloudStorageAccount sAccount = conn.storageAccount; CloudFileClient fileClient = sAccount.CreateCloudFileClient(); CloudFileShare share = fileClient.GetShareReference("scheduledfileconverter91d0"); if (await share.ExistsAsync()) { CloudFileDirectory rootDir = share.GetRootDirectoryReference(); CloudFileDirectory dir = rootDir.GetDirectoryReference(@"LogFiles/Application/Functions/Function/Function"); CloudFile logs = rootDir.GetFileReference("Logs.txt"); if (await dir.ExistsAsync()) { List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { FileResultSegment resultSegment = await dir.ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); List <CloudFile> files = new List <CloudFile>(); foreach (IListFileItem item in results) { if (item.GetType() == typeof(Microsoft.WindowsAzure.Storage.File.CloudFile)) { files.Add((CloudFile)item); } } string name = ""; foreach (CloudFile file in files) { name = (string.Compare(name, Path.GetFileNameWithoutExtension(file.Name)) > 0) ? name : Path.GetFileNameWithoutExtension(file.Name); } name += ".log"; CloudFile recentFile = dir.GetFileReference(name); string data = await recentFile.DownloadTextAsync(); string[] lines = data.Split("\n"); if (lines.Length < 50) { await logs.UploadTextAsync(data); } else { await logs.UploadTextAsync(string.Join("\n", lines.Skip(lines.Length - 50).ToArray())); } } } }
private async Task DeleteDirectoryAsync(CloudFileDirectory dir, CancellationToken cancellationToken) { FileContinuationToken token = null; do { FileResultSegment chunk = await dir.ListFilesAndDirectoriesSegmentedAsync(token, cancellationToken).ConfigureAwait(false); foreach (IListFileItem item in chunk.Results) { if (item is CloudFile file) { await file.DeleteIfExistsAsync(cancellationToken).ConfigureAwait(false); } else if (item is CloudFileDirectory subdir) { await DeleteDirectoryAsync(subdir, cancellationToken).ConfigureAwait(false); await subdir.DeleteIfExistsAsync().ConfigureAwait(false); } } token = chunk.ContinuationToken; }while(token != null); }
private static async void GetListOfFilesSegmented() { var client = cloudStorageAccount.CreateCloudFileClient(); CloudFileShare cloudFileShare = client.GetShareReference("trial"); if (cloudFileShare != null && await cloudFileShare.ExistsAsync()) { CloudFileDirectory cloudFileDirectory = cloudFileShare.GetRootDirectoryReference(); if (cloudFileDirectory != null && await cloudFileDirectory.ExistsAsync()) { FileContinuationToken fileContinuationToken = new FileContinuationToken(); do { FileResultSegment fileResultSegment = await cloudFileDirectory.ListFilesAndDirectoriesSegmentedAsync(fileContinuationToken); foreach (CloudFile result in fileResultSegment.Results) { Console.WriteLine($"{result.Name} - {result.Properties.Length} bytes"); } fileContinuationToken = fileResultSegment.ContinuationToken; } while (fileContinuationToken != null); } else { Console.WriteLine("Cloud file directory is null"); } } else { Console.WriteLine("Cloud file share is null"); } }
public async Task DownloadFile() { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(AzureStorageAccount); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); FileContinuationToken token = null; ShareResultSegment shareResultSegment = await fileClient.ListSharesSegmentedAsync("Pat", token); foreach (CloudFileShare share in shareResultSegment.Results) { CloudFileDirectory rootDir = share.GetRootDirectoryReference(); CloudFileDirectory sampleDir = rootDir.GetDirectoryReference(DateTime.Now.ToString("yyyyMMdd")); if (await sampleDir.ExistsAsync()) { do { FileResultSegment resultSegment = await sampleDir.ListFilesAndDirectoriesSegmentedAsync(token); token = resultSegment.ContinuationToken; List <IListFileItem> listedFileItems = new List <IListFileItem>(); foreach (IListFileItem listResultItem in resultSegment.Results) { var cloudFile = sampleDir.GetFileReference(listResultItem.Uri.ToString()); Console.WriteLine(cloudFile.Uri.ToString()); //await cloudFile.DownloadToFileAsync(cloudFile.Uri.ToString(), FileMode.Create); } }while (token != null); } } }
public static async void RunAsync([TimerTrigger("* */1 * * * *")] TimerInfo myTimer, ILogger log, ExecutionContext context) { //log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}"); var connStr = Utils.Utility.GetConfigurationItem(context, "Storage_Connection_String"); var queueName = Utils.Utility.GetConfigurationItem(context, "Queue-Name"); var fileShareName = Utils.Utility.GetConfigurationItem(context, "Share-Out"); string directoryName = null; CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connStr); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); CloudFileShare fileShare = fileClient.GetShareReference(fileShareName); //Get a reference to the passed fileShare //Get a reference to the passed Directory CloudFileDirectory shareDirectory; if (String.IsNullOrEmpty(directoryName)) { shareDirectory = fileShare.GetRootDirectoryReference(); } else { shareDirectory = fileShare.GetRootDirectoryReference().GetDirectoryReference(directoryName); } List <IListFileItem> lstFiles = new List <IListFileItem>(); FileContinuationToken token = null; if (fileShare.ExistsAsync().Result) { do { FileResultSegment resultSegment = await shareDirectory.ListFilesAndDirectoriesSegmentedAsync(token); lstFiles.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; } while (token != null); } foreach (var file in lstFiles) { await addFileToQueueAsync(queueName, file.Uri.ToString(), connStr); string filename = System.IO.Path.GetFileName(file.Uri.LocalPath); log.LogInformation($"Queued File: {filename}"); int statusCode = await AzTable.TableLogger.writeToTable(filename, "Azure Files", Utils.Utility.NextHop.Queue, context); if (statusCode >= 200) { log.LogInformation("File Motion logged to Table"); } } }
public async Task <List <string> > ListFiles(string shareName, string folder) { List <string> toReturn = new List <string>(); try { CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(this.ConnectionString); CloudFileClient cloudFileClient = storageAccount.CreateCloudFileClient(); CloudFileShare cloudFileShare = cloudFileClient.GetShareReference(shareName); await cloudFileShare.CreateIfNotExistsAsync(); CloudFileDirectory rootDirectory = cloudFileShare.GetRootDirectoryReference(); CloudFileDirectory fileDirectory = null; if (!string.IsNullOrEmpty(folder)) { fileDirectory = rootDirectory.GetDirectoryReference(folder); } else { fileDirectory = rootDirectory; } await fileDirectory.CreateIfNotExistsAsync(); List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { FileResultSegment resultSegment = await fileDirectory.ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); foreach (var item in results) { if (item.GetType() == typeof(CloudFile)) { CloudFile file = (CloudFile)item; toReturn.Add(file.Name); } } } catch (Exception ex) { this.ErrorMessage = ex.ToString(); } return(toReturn); }
/// <summary> /// Get the list of all files and directories under the root directory. /// </summary> /// <param name="root">The share root directory.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The async task.</returns> public async Task <IListFileItem[]> GetItems(CloudFileDirectory root, CancellationToken cancellationToken) { List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { // Get the set of data. FileResultSegment resultSegment = await root.ListFilesAndDirectoriesSegmentedAsync(token, cancellationToken); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); // Return the list. return(results.ToArray()); }
public async Task <List <IListFileItem> > getFilesFromAzure() { FileSharePermissions permissions = await share.GetPermissionsAsync(); // List all files/directories under the root directory Console.WriteLine("4. List Files/Directories in root directory"); List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { FileResultSegment resultSegment = await share.GetRootDirectoryReference().GetDirectoryReference(directoryName).ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); return(results); }
protected override async Task <IReadOnlyCollection <Blob> > ListAtAsync( string path, ListOptions options, CancellationToken cancellationToken) { if (StoragePath.IsRootPath(path)) { //list file shares ShareResultSegment shares = await _client.ListSharesSegmentedAsync(null, cancellationToken).ConfigureAwait(false); return(shares.Results.Select(AzConvert.ToBlob).ToList()); } else { var chunk = new List <Blob>(); CloudFileDirectory dir = await GetDirectoryReferenceAsync(path, cancellationToken).ConfigureAwait(false); FileContinuationToken token = null; do { try { FileResultSegment segment = await dir.ListFilesAndDirectoriesSegmentedAsync(options.FilePrefix, token, cancellationToken).ConfigureAwait(false); token = segment.ContinuationToken; chunk.AddRange(segment.Results.Select(r => AzConvert.ToBlob(path, r))); } catch (AzStorageException ex) when(ex.RequestInformation.ErrorCode == "ShareNotFound") { break; } catch (AzStorageException ex) when(ex.RequestInformation.ErrorCode == "ResourceNotFound") { break; } }while(token != null); return(chunk); } }
public async Task <IEnumerable <CloudFile> > GetFiles() { do { List <CloudFile> cloudFiles = new List <CloudFile>(); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(AzureStorageAccount); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); FileContinuationToken token = null; ShareResultSegment shareResultSegment = await fileClient.ListSharesSegmentedAsync("Pat", token); foreach (CloudFileShare share in shareResultSegment.Results) { CloudFileDirectory rootDir = share.GetRootDirectoryReference(); CloudFileDirectory sampleDir = rootDir.GetDirectoryReference(DateTime.Now.ToString("yyyyMMdd")); if (await sampleDir.ExistsAsync()) //Console.WriteLine(cloudFile.Uri.ToString()+'\n'); { do { FileResultSegment resultSegment = await sampleDir.ListFilesAndDirectoriesSegmentedAsync(token); token = resultSegment.ContinuationToken; List <IListFileItem> listedFileItems = new List <IListFileItem>(); foreach (IListFileItem listResultItem in resultSegment.Results) { CloudFile cloudFile = sampleDir.GetFileReference(listResultItem.Uri.ToString()); cloudFiles.Add(cloudFile); } }while (token != null); } } return(cloudFiles); } while (true); }
public override async Task <IEnumerable <T> > ListContainedItemsAsync <T>(string filter, int maxResults, CancellationToken cancellationToken, TimeSpan timeout) { DateTime start = DateTime.UtcNow; DateTime end = start.Add(timeout); List <IListFileItem> result = new List <IListFileItem>(); CloudFileDirectory d = new CloudFileDirectory(URI, StorageAccount.Credentials); FileContinuationToken continuationToken = null; FileResultSegment resultSegment = null; do { resultSegment = await _dir.ListFilesAndDirectoriesSegmentedAsync(filter, maxResults, continuationToken, null, null, cancellationToken); result.AddRange(resultSegment.Results); if (result.Count > maxResults) { return(result.Take(maxResults) as IEnumerable <T>); } continuationToken = resultSegment.ContinuationToken; }while (continuationToken != null && !cancellationToken.IsCancellationRequested && DateTime.UtcNow < end); return(result as IEnumerable <T>); }
/// <summary> /// Basic operations to work with Azure Files /// </summary> /// <returns>Task</returns> private static async Task BasicAzureFileOperationsAsync() { const string DemoShare = "demofileshare"; const string DemoDirectory = "demofiledirectory"; const string ImageToUpload = "HelloWorld.png"; // Retrieve storage account information from connection string // How to create a storage connection string - http://msdn.microsoft.com/en-us/library/azure/ee758697.aspx CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(CloudConfigurationManager.GetSetting("StorageConnectionString")); // Create a file client for interacting with the file service. CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); // Create a share for organizing files and directories within the storage account. Console.WriteLine("1. Creating file share"); CloudFileShare share = fileClient.GetShareReference(DemoShare); try { await share.CreateIfNotExistsAsync(); } catch (StorageException) { Console.WriteLine("Please make sure your storage account has storage file endpoint enabled and specified correctly in the app.config - then restart the sample."); Console.WriteLine("Press any key to exit"); Console.ReadLine(); throw; } // Get a reference to the root directory of the share. CloudFileDirectory root = share.GetRootDirectoryReference(); // Create a directory under the root directory Console.WriteLine("2. Creating a directory under the root directory"); CloudFileDirectory dir = root.GetDirectoryReference(DemoDirectory); await dir.CreateIfNotExistsAsync(); // Uploading a local file to the directory created above Console.WriteLine("3. Uploading a file to directory"); CloudFile file = dir.GetFileReference(ImageToUpload); await file.UploadFromFileAsync(ImageToUpload); // List all files/directories under the root directory Console.WriteLine("4. List Files/Directories in root directory"); List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { FileResultSegment resultSegment = await share.GetRootDirectoryReference().ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); // Print all files/directories listed above foreach (IListFileItem listItem in results) { // listItem type will be CloudFile or CloudFileDirectory Console.WriteLine("- {0} (type: {1})", listItem.Uri, listItem.GetType()); } // Download the uploaded file to your file system Console.WriteLine("5. Download file from {0}", file.Uri.AbsoluteUri); await file.DownloadToFileAsync(string.Format("./CopyOf{0}", ImageToUpload), FileMode.Create); // Clean up after the demo Console.WriteLine("6. Delete file"); await file.DeleteAsync(); // When you delete a share it could take several seconds before you can recreate a share with the same // name - hence to enable you to run the demo in quick succession the share is not deleted. If you want // to delete the share uncomment the line of code below. // Console.WriteLine("7. Delete Share"); // await share.DeleteAsync(); }
private async Task <IEnumerable <string> > ListFilesOrDirectoriesAsync(string folderPath, bool isDirectory) { if (!folderPath.StartsWith("/")) { throw new ArgumentException("First character on folderPath must be / (root).", nameof(folderPath)); } string[] filePathSplitted = folderPath.Split("/"); if (filePathSplitted.Length < 2) { throw new ArgumentException("FolderPath correct format is \"/{folder/s}\".", nameof(folderPath)); } // Get a reference to the file share we created previously. CloudFileShare share = fileClient.GetShareReference(filePathSplitted[1]); // Ensure that the share exists. if (true || await share.ExistsAsync().ConfigureAwait(false)) //Obviamos esta comprobación porque puede que no se tenga privilegios suficientes { // Get a reference to the root directory for the share. CloudFileDirectory selDir = share.GetRootDirectoryReference(); if (!selDir.Exists()) { throw new Exception("Incorrect route path."); } // Get a reference to the directory we created previously. if (filePathSplitted.Length > 2) { CloudFileDirectory tempDir = selDir.GetDirectoryReference(filePathSplitted[2]); if (!tempDir.Exists()) { throw new Exception("Incorrect route path."); } for (int i = 3; i < filePathSplitted.Length; i++) { tempDir = tempDir.GetDirectoryReference(filePathSplitted[i]); if (!tempDir.Exists()) { throw new Exception("Incorrect route path."); } } selDir = tempDir; } List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { FileResultSegment resultSegment = await selDir.ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); if (isDirectory) { return(results.Where(lfi => lfi is CloudFileDirectory).Select(lfi => ((CloudFileDirectory)lfi).Name)); } else { return(results.Where(lfi => lfi is CloudFile).Select(lfi => ((CloudFile)lfi).Name)); } } else { throw new Exception("Share not found."); } }
private IEnumerable <TransferEntry> EnumerateLocationRecursive(CancellationToken cancellationToken) { string fullPrefix = Uri.UnescapeDataString(this.location.FileDirectory.SnapshotQualifiedUri.AbsolutePath); // Normalize full prefix to end with slash. if (!string.IsNullOrEmpty(fullPrefix) && !fullPrefix.EndsWith("/", StringComparison.OrdinalIgnoreCase)) { fullPrefix += '/'; } Stack <CloudFileDirectory> directoriesToList = new Stack <CloudFileDirectory>(); directoriesToList.Push(this.location.FileDirectory); string[] pathSegList = null; bool passedContinuationToken = false; int pathSegListIndex = 0; if (null != this.listContinuationToken) { pathSegList = this.listContinuationToken.FilePath.Split(new char[] { UriDelimiter }); } else { passedContinuationToken = true; } while (0 != directoriesToList.Count) { CloudFileDirectory directory = directoriesToList.Pop(); string dirAbsolutePath = Uri.UnescapeDataString(directory.SnapshotQualifiedUri.AbsolutePath); if (dirAbsolutePath[dirAbsolutePath.Length - 1] != UriDelimiter) { dirAbsolutePath = dirAbsolutePath + UriDelimiter; } Stack <CloudFileDirectory> innerDirList = new Stack <CloudFileDirectory>(); FileContinuationToken continuationToken = null; // To check whether reached continuation token by dir or file in this round. bool checkFile = false; bool passedSubFolder = false; string continuationTokenSeg = null; if (!passedContinuationToken) { if (pathSegList.Length - 1 == pathSegListIndex) { checkFile = true; } continuationTokenSeg = pathSegList[pathSegListIndex]; pathSegListIndex++; } do { FileResultSegment resultSegment = null; Utils.CheckCancellation(cancellationToken); ErrorEntry errorEntry = null; try { FileRequestOptions requestOptions = Transfer_RequestOptions.DefaultFileRequestOptions; resultSegment = directory.ListFilesAndDirectoriesSegmentedAsync( ListFilesSegmentSize, continuationToken, requestOptions, null, cancellationToken).Result; } catch (Exception ex) { string errorMessage = string.Format( CultureInfo.CurrentCulture, Resources.FailedToEnumerateDirectory, this.location.FileDirectory.SnapshotQualifiedUri.AbsoluteUri, string.Empty); TransferException exception = new TransferException(TransferErrorCode.FailToEnumerateDirectory, errorMessage, ex); errorEntry = new ErrorEntry(exception); } if (null != errorEntry) { yield return(errorEntry); yield break; } continuationToken = resultSegment.ContinuationToken; foreach (IListFileItem fileItem in resultSegment.Results) { Utils.CheckCancellation(cancellationToken); if (fileItem is CloudFileDirectory) { if (checkFile || passedContinuationToken || passedSubFolder) { innerDirList.Push(fileItem as CloudFileDirectory); } else { CloudFileDirectory cloudDir = fileItem as CloudFileDirectory; string fullPath = Uri.UnescapeDataString(cloudDir.SnapshotQualifiedUri.AbsolutePath); string segName = fullPath.Remove(0, dirAbsolutePath.Length); int compareResult = string.Compare(segName, continuationTokenSeg, StringComparison.OrdinalIgnoreCase); if (compareResult >= 0) { passedSubFolder = true; innerDirList.Push(cloudDir); if (compareResult > 0) { passedContinuationToken = true; } } } } else if (fileItem is CloudFile) { if (!checkFile && !passedContinuationToken) { continue; } CloudFile cloudFile = fileItem as CloudFile; string fullPath = Uri.UnescapeDataString(cloudFile.SnapshotQualifiedUri.AbsolutePath); string relativePath = fullPath.Remove(0, fullPrefix.Length); if (passedContinuationToken) { yield return(new AzureFileEntry( relativePath, cloudFile, new AzureFileListContinuationToken(relativePath))); } else { string segName = fullPath.Remove(0, dirAbsolutePath.Length); int compareResult = string.Compare(segName, continuationTokenSeg, StringComparison.OrdinalIgnoreCase); if (compareResult < 0) { continue; } passedContinuationToken = true; if (compareResult > 0) { yield return(new AzureFileEntry( relativePath, cloudFile, new AzureFileListContinuationToken(relativePath))); } } } } }while (continuationToken != null); if (checkFile) { passedContinuationToken = true; } if (innerDirList.Count <= 0) { if (!checkFile && !passedContinuationToken) { passedContinuationToken = true; } } else { while (innerDirList.Count > 0) { directoriesToList.Push(innerDirList.Pop()); } } } }
private IEnumerable <TransferEntry> EnumerateLocationRecursive(CancellationToken cancellationToken) { string fullPrefix = null; if (null != this.baseDirectory) { fullPrefix = Uri.UnescapeDataString(this.baseDirectory.SnapshotQualifiedUri.AbsolutePath); } else { fullPrefix = Uri.UnescapeDataString(this.location.FileDirectory.SnapshotQualifiedUri.AbsolutePath); } // Normalize full prefix to end with slash. if (!string.IsNullOrEmpty(fullPrefix) && !fullPrefix.EndsWith("/", StringComparison.OrdinalIgnoreCase)) { fullPrefix += '/'; } CloudFileDirectory directory = this.location.FileDirectory; Stack <CloudFileDirectory> innerDirList = new Stack <CloudFileDirectory>(); FileContinuationToken continuationToken = null; bool passedContinuationToken = false; if (null == this.listContinuationToken) { passedContinuationToken = true; } do { FileResultSegment resultSegment = null; Utils.CheckCancellation(cancellationToken); ErrorEntry errorEntry = null; try { FileRequestOptions requestOptions = Transfer_RequestOptions.DefaultFileRequestOptions; resultSegment = directory.ListFilesAndDirectoriesSegmentedAsync( ListFilesSegmentSize, continuationToken, requestOptions, null, cancellationToken).Result; } catch (Exception ex) { string errorMessage = string.Format( CultureInfo.CurrentCulture, Resources.FailedToEnumerateDirectory, directory.SnapshotQualifiedUri.AbsoluteUri, string.Empty); TransferException exception = new TransferException(TransferErrorCode.FailToEnumerateDirectory, errorMessage, ex); errorEntry = new ErrorEntry(exception); } if (null != errorEntry) { yield return(errorEntry); yield break; } continuationToken = resultSegment.ContinuationToken; foreach (IListFileItem fileItem in resultSegment.Results) { Utils.CheckCancellation(cancellationToken); if (fileItem is CloudFileDirectory) { CloudFileDirectory cloudDir = fileItem as CloudFileDirectory; if (!passedContinuationToken) { if (string.Equals(cloudDir.Name, this.listContinuationToken.FilePath, StringComparison.Ordinal)) { passedContinuationToken = true; continue; } else { continue; } } string fullPath = Uri.UnescapeDataString(cloudDir.SnapshotQualifiedUri.AbsolutePath); string relativePath = fullPath.Remove(0, fullPrefix.Length); yield return(new AzureFileDirectoryEntry( relativePath, cloudDir, new AzureFileListContinuationToken(cloudDir.Name))); } else if (fileItem is CloudFile) { CloudFile cloudFile = fileItem as CloudFile; if (!passedContinuationToken) { if (string.Equals(cloudFile.Name, this.listContinuationToken.FilePath, StringComparison.Ordinal)) { passedContinuationToken = true; continue; } else { continue; } } string fullPath = Uri.UnescapeDataString(cloudFile.SnapshotQualifiedUri.AbsolutePath); string relativePath = fullPath.Remove(0, fullPrefix.Length); yield return(new AzureFileEntry( relativePath, cloudFile, new AzureFileListContinuationToken(cloudFile.Name))); } } }while (continuationToken != null); }
public async void FileStorageTest() { ClearOutput(); WriteLine("-- Testing File Storage --"); WriteLine("0. Creating file client"); // Create a file client for interacting with the file service. CloudFileClient fileClient = StorageAccount.CreateCloudFileClient(); // Create a share for organizing files and directories within the storage account. WriteLine("1. Creating file share"); CloudFileShare share = fileClient.GetShareReference(DemoShare); try { await share.CreateIfNotExistsAsync(); } catch (StorageException) { WriteLine("Please make sure your storage account has storage file endpoint enabled and specified correctly in the app.config - then restart the sample."); throw; } // Get a reference to the root directory of the share. CloudFileDirectory root = share.GetRootDirectoryReference(); // Create a directory under the root directory WriteLine("2. Creating a directory under the root directory"); CloudFileDirectory dir = root.GetDirectoryReference(DemoDirectory); await dir.CreateIfNotExistsAsync(); // Uploading a local file to the directory created above WriteLine("3. Uploading a file to directory"); CloudFile file = dir.GetFileReference(ImageToUpload); #if WINDOWS_UWP && ENABLE_DOTNET StorageFolder storageFolder = await StorageFolder.GetFolderFromPathAsync(Application.streamingAssetsPath.Replace('/', '\\')); StorageFile sf = await storageFolder.GetFileAsync(ImageToUpload); await file.UploadFromFileAsync(sf); #else await file.UploadFromFileAsync(Path.Combine(Application.streamingAssetsPath, ImageToUpload)); #endif // List all files/directories under the root directory WriteLine("4. List Files/Directories in root directory"); List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { FileResultSegment resultSegment = await share.GetRootDirectoryReference().ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); // Print all files/directories listed above foreach (IListFileItem listItem in results) { // listItem type will be CloudFile or CloudFileDirectory WriteLine(string.Format("- {0} (type: {1})", listItem.Uri, listItem.GetType())); } // Download the uploaded file to your file system string path; WriteLine(string.Format("5. Download file from {0}", file.Uri.AbsoluteUri)); string fileName = string.Format("CopyOf{0}", ImageToUpload); #if WINDOWS_UWP && ENABLE_DOTNET storageFolder = ApplicationData.Current.TemporaryFolder; sf = await storageFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); path = sf.Path; await file.DownloadToFileAsync(sf); #else path = Path.Combine(Application.temporaryCachePath, fileName); await file.DownloadToFileAsync(path, FileMode.Create); #endif WriteLine("File written to " + path); // Clean up after the demo WriteLine("6. Delete file"); await file.DeleteAsync(); // When you delete a share it could take several seconds before you can recreate a share with the same // name - hence to enable you to run the demo in quick succession the share is not deleted. If you want // to delete the share uncomment the line of code below. WriteLine("7. Delete Share -- Note that it will take a few seconds before you can recreate a share with the same name"); await share.DeleteAsync(); WriteLine("-- Test Complete --"); }
private static async Task mainAsync(string[] args) { try { var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); IConfigurationRoot configuration = builder.Build(); var allCitDebtsLines = new string[10000000]; var allSettlementsLines = new string[10000000]; var allPaymentLines = new string[10000000]; while (true) { if (DateTime.Now.AddHours(3).ToShortTimeString() == "12:00 PM") { List <string> fileNames = new List <string>(); List <string[]> lstCloudFilesdata = new List <string[]>(); CloudStorageAccount storageAccount = CloudStorageAccount.Parse($"{configuration["ConnectionString1"]}"); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); CloudFileShare fileShare = fileClient.GetShareReference("import"); //looks for a file share in the cloud bool fileShareExists = await fileShare.ExistsAsync(); if (fileShareExists) { List <CloudFile> lstCloudFiles = new List <CloudFile>(); CloudFileDirectory rootDir = fileShare.GetRootDirectoryReference(); //for each file in my fileshare FileContinuationToken token = null; FileResultSegment k = await rootDir.ListFilesAndDirectoriesSegmentedAsync(token); token = k.ContinuationToken; //var context_ = new Db.Data.(); List <string> sl = new List <string>(); foreach (IListFileItem fiile in k.Results) { //if the file exists CloudFile file = (CloudFile)fiile; bool asd = await file.ExistsAsync(); if (asd) { //adds new datasting array sl = await ReadDataAsync(lstCloudFilesdata, file, fileNames); } foreach (string y in sl) { Console.WriteLine("From list new : " + y); } ; IEnumerable <CitizenDepts> o = from eachLine in ( from inner in sl select inner.Split(';') ) select new CitizenDepts { VAT = eachLine[0], FirstName = eachLine[1], LastName = eachLine[2], Email = eachLine[3], Phone = eachLine[4], Address = eachLine[5], County = eachLine[6], BillId = eachLine[7], Bill_description = eachLine[8], Amount = Decimal.Parse(eachLine[9]), DueDate = DateTime.ParseExact(eachLine[10], "yyyyMMdd", CultureInfo.InvariantCulture) }; foreach (var p in o) { Console.WriteLine(p.FirstName + " - " + p.BillId + ", - " + p.DueDate); } ; //string s = context_.Database.ProviderName; // Console.WriteLine(s); /// var all = from c in context_.CitizenDepts select c; //context_.CitizenDepts.RemoveRange(all); /// context_.SaveChanges(); foreach (var p in o) { //Add Student object into Students DBset //if (p.VAT!=null) //context_.Add(p); } //// call SaveChanges method to save student into database //context_.SaveChanges(); } } if (lstCloudFilesdata != null && fileNames != null) { ProccessData(lstCloudFilesdata, fileNames); } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { } }
/// <summary> /// Enumerates a specified cloud file directory and returns items based item type and searchPattern. /// </summary> /// <param name="cloudFileDirectory">Cloud file directory to enumerate on</param> /// <param name="fileType">Item type to filter with</param> /// <param name="searchPattern">Search pattern to filter with</param> /// <returns>Enumerable of strings which contains all found names based on file type</returns> public static IEnumerable <string> EnumerateDirectory(this CloudFileDirectory cloudFileDirectory, EFileType fileType, string searchPattern) { #region validation if (cloudFileDirectory == null) { throw new ArgumentNullException(nameof(cloudFileDirectory)); } if (string.IsNullOrEmpty(searchPattern)) { throw new ArgumentNullException(nameof(searchPattern)); } if (!TaskUtilities.ExecuteSync(cloudFileDirectory.ExistsAsync())) { return(new List <string>()); } #endregion var directoryNames = new List <string>(); var fileContinuationToken = new FileContinuationToken(); do { FileResultSegment fileResultSegment = TaskUtilities.ExecuteSync(cloudFileDirectory.ListFilesAndDirectoriesSegmentedAsync(fileContinuationToken)); foreach (IListFileItem listFileItem in fileResultSegment.Results) { string fullListItemPath = string.Empty; switch (fileType) { case EFileType.Files: if (listFileItem is CloudFile cloudFile) { fullListItemPath = cloudFile.StorageUri.PrimaryUri.ToString(); } break; case EFileType.Directories: if (listFileItem is CloudFileDirectory pendingCloudFileDirectory) { fullListItemPath = pendingCloudFileDirectory.StorageUri.PrimaryUri.ToString(); if (fullListItemPath.EndsWith('/')) { fullListItemPath = fullListItemPath.Remove(fullListItemPath.LastIndexOf('/')); } } break; default: throw new ArgumentOutOfRangeException(nameof(fileType), fileType, null); } // replace wildcard for 'multiple letters' with regex-wildcard string regexableSearchPattern = searchPattern.Replace("*", ".*"); // replace wildcard for 'single letter' with regex-wildcard regexableSearchPattern = regexableSearchPattern.Replace("?", ".?"); // set search pattern in 'begin-to-end'-symbols regexableSearchPattern = $"^{regexableSearchPattern}$"; var rgxFileName = new Regex(regexableSearchPattern); if (!string.IsNullOrEmpty(fullListItemPath) && rgxFileName.IsMatch(fullListItemPath)) { directoryNames.Add(fullListItemPath); } } fileContinuationToken = fileResultSegment.ContinuationToken; } while (fileContinuationToken != null); return(directoryNames); }
private async Task <IEnumerable <TListFileItem> > ListFileItems <TListFileItem>( string[] directoryPath, CancellationToken cancellationToken) where TListFileItem : IListFileItem { IEnumerable <TListFileItem> toReturn = null; if (directoryPath == null) { throw new ArgumentNullException(nameof(directoryPath)); } this.loggerWrapper.Debug( $"Getting root directory reference for " + $"\"{this.sourceCloudFileShare.Name}\"..."); CloudFileDirectory shareRoot = this.sourceCloudFileShare.GetRootDirectoryReference(); CloudFileDirectory innerDir = shareRoot; foreach (string directory in directoryPath) { this.loggerWrapper.Debug( $"Getting reference to directory \"{directory}\"..."); innerDir = innerDir.GetDirectoryReference(directory); } this.loggerWrapper.Debug( "Beginning listing of files/directories..."); List <TListFileItem> listFileItems = new List <TListFileItem>(); IEnumerable <IListFileItem> results = null; IEnumerable <TListFileItem> castedResults = null; FileContinuationToken fileContinuationToken = null; do { FileResultSegment fileResultSegment = await innerDir.ListFilesAndDirectoriesSegmentedAsync( null, fileContinuationToken, this.fileRequestOptions, this.operationContext, cancellationToken) .ConfigureAwait(false); results = fileResultSegment.Results; this.loggerWrapper.Debug( $"{results.Count()} result(s) returned. Filtering to " + $"directories..."); castedResults = results .Where(x => x is TListFileItem) .Cast <TListFileItem>(); this.loggerWrapper.Debug( $"Adding {results.Count()} filtered results to the " + $"overall results list..."); listFileItems.AddRange(castedResults); this.loggerWrapper.Info( $"Total filtered results so far: " + $"{listFileItems.Count}."); fileContinuationToken = fileResultSegment.ContinuationToken; if (fileContinuationToken != null) { this.loggerWrapper.Debug( $"{nameof(FileContinuationToken)} present. Looping " + $"round again..."); } }while (fileContinuationToken != null); toReturn = listFileItems.ToList(); return(toReturn); }
private async Task BasicAzureFileOperationsAsync() { const string DemoShare = "demofileshare"; const string DemoDirectory = "demofiledirectory"; const string ImageToUpload = "HelloWorld.png"; CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(AppConfig.ConnectionString); CloudFileClient fileClient = storageAccount.CreateCloudFileClient(); CloudFileShare share = fileClient.GetShareReference(DemoShare); try { await share.CreateIfNotExistsAsync(); } catch (StorageException) { Debug.WriteLine("Please make sure your storage account has storage file endpoint enabled and specified correctly in the app.config - then restart the sample."); } CloudFileDirectory root = share.GetRootDirectoryReference(); Debug.WriteLine("2. Creating a directory under the root directory"); CloudFileDirectory dir = root.GetDirectoryReference(DemoDirectory); await dir.CreateIfNotExistsAsync(); StorageFolder storageFolder = ApplicationData.Current.LocalFolder; var realFile = await storageFolder.CreateFileAsync(ImageToUpload, Windows.Storage.CreationCollisionOption.ReplaceExisting); Debug.WriteLine("3. Uploading a file to directory"); CloudFile file = dir.GetFileReference(ImageToUpload); await file.UploadFromFileAsync(realFile); // List all files/directories under the root directory Debug.WriteLine("4. List Files/Directories in root directory"); List <IListFileItem> results = new List <IListFileItem>(); FileContinuationToken token = null; do { FileResultSegment resultSegment = await share.GetRootDirectoryReference().ListFilesAndDirectoriesSegmentedAsync(token); results.AddRange(resultSegment.Results); token = resultSegment.ContinuationToken; }while (token != null); // Print all files/directories listed above foreach (IListFileItem listItem in results) { // listItem type will be CloudFile or CloudFileDirectory Debug.WriteLine("- {0} (type: {1})", listItem.Uri, listItem.GetType()); } // Download the uploaded file to your file system Debug.WriteLine("5. Download file from {0}", file.Uri.AbsoluteUri); var newFile = await storageFolder.CreateFileAsync(string.Format("./CopyOf{0}", ImageToUpload), Windows.Storage.CreationCollisionOption.ReplaceExisting); await file.DownloadToFileAsync(newFile); // Clean up after the demo Debug.WriteLine("6. Delete file"); await file.DeleteAsync(); // When you delete a share it could take several seconds before you can recreate a share with the same // name - hence to enable you to run the demo in quick succession the share is not deleted. If you want // to delete the share uncomment the line of code below. // Console.WriteLine("7. Delete Share"); // await share.DeleteAsync(); }