Удалить Azure Blobs в подпапке в C # - без удаления подпапки - PullRequest
0 голосов
/ 01 января 2019

У меня есть контейнер Azure 'MyContainer', затем 'под ним', у меня есть 'подпапки' с именем ProcessingFiles.Таким образом, «структура» выглядит следующим образом:

MyContainer \ ProcessingFiles \ SampleFile.xml

Я хочу удалить «SampleFile.xml» - но когда я запускаю следующий кодпапка «ProcessingFiles» также удаляется.

 //connect to azure  container
            var storageAccount = CloudStorageAccount.Parse(_BlobConnectionstring);

            var myClient = storageAccount.CreateCloudBlobClient();
            var container = myClient.GetContainerReference(MyContainer");

            container.CreateIfNotExists(BlobContainerPublicAccessType.Blob);

            _blobabspath = container.Uri.AbsoluteUri;

            foreach (IListBlobItem blobItem in container.ListBlobs())
            {
                if (blobItem is CloudBlobDirectory)
                {
                    CloudBlobDirectory directory = (CloudBlobDirectory)blobItem;
                    if (directory.Uri.AbsoluteUri.Contains("ProcessingFolder))
                    {
                        IEnumerable<IListBlobItem> blobs = directory.ListBlobs(true);
                        ICloudBlob bi;
                        foreach (var blob in blobs)
                        {
                            if (blob is CloudBlockBlob)
                            {
                                bi = blob as CloudBlockBlob;
                                if (bi.Name.Contains(".xml"))
                                {
                                   Log.Info($"Deleting XML file : {bi.Name} from {_processingfolder}");
                                   bi.Delete();
                                }
                            }
                        }
                    }
                }
            }

Как ПРОСТО удалить один файл XML - и не включать подпапку «ProcessingFolder»?

Чего мне не хватает?спасибо заранее

1 Ответ

0 голосов
/ 01 января 2019

В хранилище Azure нет подпапок, только контейнеры и BLOB-объекты.Хранилище Azure дает вам то, что выглядит как как папки через символ разделителя (например, позволяя вам выполнять определенный поиск).

На самом деле имя вашего большого двоичного объекта ProcessingFiles\SampleFile.xml.Вот почему кажется, что подпапка исчезает, когда вы удаляете BLOB-объект.

Просто для того, чтобы продвинуться дальше: скажем, у вас было тысяча BLOB-объектов, распределенных по нескольким «подпапкам», и вы попытались отфильтроватьтолько одна подпапка (ProcessingFiles в вашем случае).Поиск все равно будет сканировать все тысячи BLOB-объектов, отфильтровывая префиксную часть указанного вами имени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...