public bool ExistsDirectory(string directoryName)
        {
            directoryName = StorageUtils.NormalizeDirectoryName(directoryName);
            CloudBlobDirectory directory = PublicContainer.GetDirectoryReference(directoryName);

            return(directory.ListBlobsSegmentedAsync(null).GetAwaiter().GetResult().Results.Any());
        }
        public void RenameDirectory(string directoryName, string newDirectoryName)
        {
            CreateDirectory(newDirectoryName);
            directoryName    = StorageUtils.NormalizeDirectoryName(directoryName);
            newDirectoryName = StorageUtils.NormalizeDirectoryName(newDirectoryName);

            CloudBlobDirectory directory = PublicContainer.GetDirectoryReference(directoryName);

            foreach (IListBlobItem item in directory.ListBlobsSegmentedAsync(null).GetAwaiter().GetResult().Results)
            {
                string fileName = string.Empty;

                if (item.GetType() == typeof(CloudBlockBlob))
                {
                    CloudBlockBlob blob = (CloudBlockBlob)item;
                    fileName = Path.GetFileName(blob.Name);
                    Copy(blob.Name, GxFileType.Public, newDirectoryName + fileName, GxFileType.Public);
                    Delete(blob.Name, GxFileType.Public);
                }
                else if (item.GetType() == typeof(CloudPageBlob))
                {
                    CloudPageBlob pageBlob = (CloudPageBlob)item;
                    fileName = Path.GetFileName(pageBlob.Name);
                    Copy(directoryName + fileName, GxFileType.Public, newDirectoryName + fileName, GxFileType.Public);
                }
                else if (item.GetType() == typeof(CloudBlobDirectory))
                {
                    CloudBlobDirectory dir = (CloudBlobDirectory)item;
                    RenameDirectory(directoryName + dir.Prefix, newDirectoryName + dir.Prefix);
                }
            }
            DeleteDirectory(directoryName);
        }
        public void DeleteDirectory(string directoryName)
        {
            directoryName = StorageUtils.NormalizeDirectoryName(directoryName);
            CloudBlobDirectory directory = PublicContainer.GetDirectoryReference(directoryName);

            foreach (IListBlobItem item in directory.ListBlobsSegmentedAsync(null).GetAwaiter().GetResult().Results)
            {
                if (item.GetType() == typeof(CloudBlockBlob))
                {
                    CloudBlockBlob blob = (CloudBlockBlob)item;

                    blob.DeleteAsync().GetAwaiter().GetResult();
                }
                else if (item.GetType() == typeof(CloudPageBlob))
                {
                    CloudPageBlob pageBlob = (CloudPageBlob)item;

                    pageBlob.DeleteAsync().GetAwaiter().GetResult();
                }
                else if (item.GetType() == typeof(CloudBlobDirectory))
                {
                    CloudBlobDirectory dir = (CloudBlobDirectory)item;

                    DeleteDirectory(dir.Prefix);
                }
            }
        }
        public List <string> GetSubDirectories(string directoryName)
        {
            List <string> directories = new List <string>();

            directoryName = StorageUtils.NormalizeDirectoryName(directoryName);
            CloudBlobDirectory directory = PublicContainer.GetDirectoryReference(directoryName);

            foreach (IListBlobItem item in directory.ListBlobsSegmentedAsync(null).GetAwaiter().GetResult().Results)
            {
                if (item.GetType() == typeof(CloudBlobDirectory))
                {
                    CloudBlobDirectory dir = (CloudBlobDirectory)item;

                    directories.Add(dir.Prefix);
                }
            }
            return(directories);
        }
        public List <string> GetFiles(string directoryName, string filter = "")
        {
            List <string> files = new List <string>();

            directoryName = StorageUtils.NormalizeDirectoryName(directoryName);
            CloudBlobDirectory directory = PublicContainer.GetDirectoryReference(directoryName);

            foreach (IListBlobItem item in directory.ListBlobsSegmentedAsync(null).GetAwaiter().GetResult().Results)
            {
                if (item.GetType() == typeof(CloudBlockBlob))
                {
                    CloudBlockBlob blob = (CloudBlockBlob)item;
                    if (String.IsNullOrEmpty(filter) || blob.Name.Contains(filter))
                    {
                        files.Add(blob.Name);
                    }
                }
            }
            return(files);
        }