Delete Azure Blobs in subfolder in C# - without deleting the subfolder












1















I have an Azure container 'MyContainer' then 'under' it, I have 'subfolders' called ProcessingFiles. So the 'structure' looks like this



MyContainerProcessingFilesSampleFile.xml



I want to delete 'SampleFile.xml' - but when I run the following code the 'ProcessingFiles' folder is also deleted.



 //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();
}
}
}
}
}
}


How do I JUST delete the single XML file - and not include the subfolder 'ProcessingFolder'?



What am I missing? thx in advance










share|improve this question





























    1















    I have an Azure container 'MyContainer' then 'under' it, I have 'subfolders' called ProcessingFiles. So the 'structure' looks like this



    MyContainerProcessingFilesSampleFile.xml



    I want to delete 'SampleFile.xml' - but when I run the following code the 'ProcessingFiles' folder is also deleted.



     //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();
    }
    }
    }
    }
    }
    }


    How do I JUST delete the single XML file - and not include the subfolder 'ProcessingFolder'?



    What am I missing? thx in advance










    share|improve this question



























      1












      1








      1








      I have an Azure container 'MyContainer' then 'under' it, I have 'subfolders' called ProcessingFiles. So the 'structure' looks like this



      MyContainerProcessingFilesSampleFile.xml



      I want to delete 'SampleFile.xml' - but when I run the following code the 'ProcessingFiles' folder is also deleted.



       //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();
      }
      }
      }
      }
      }
      }


      How do I JUST delete the single XML file - and not include the subfolder 'ProcessingFolder'?



      What am I missing? thx in advance










      share|improve this question
















      I have an Azure container 'MyContainer' then 'under' it, I have 'subfolders' called ProcessingFiles. So the 'structure' looks like this



      MyContainerProcessingFilesSampleFile.xml



      I want to delete 'SampleFile.xml' - but when I run the following code the 'ProcessingFiles' folder is also deleted.



       //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();
      }
      }
      }
      }
      }
      }


      How do I JUST delete the single XML file - and not include the subfolder 'ProcessingFolder'?



      What am I missing? thx in advance







      c# azure azure-storage azure-storage-blobs






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 1 at 16:00









      David Makogon

      57.1k15108154




      57.1k15108154










      asked Jan 1 at 15:55









      JonJon

      42041221




      42041221
























          1 Answer
          1






          active

          oldest

          votes


















          3














          Azure Storage doesn't have subfolders, only containers and blobs. Azure Storage gives you something that looks like folders via the delimiter character (letting you do specific searches, for instance).



          Your blob's name is actually ProcessingFilesSampleFile.xml. This is why it appears that the subfolder disappears when you delete the blob.



          Just to drive the point home a bit further: let's say you had a thousand blobs, spread across multiple "subfolders" and you tried filtering on just the one subfolder (ProcessingFiles in your case). The search would still scan all thousand blobs, filtering on the prefix part of the name you specified.






          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53996851%2fdelete-azure-blobs-in-subfolder-in-c-sharp-without-deleting-the-subfolder%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            3














            Azure Storage doesn't have subfolders, only containers and blobs. Azure Storage gives you something that looks like folders via the delimiter character (letting you do specific searches, for instance).



            Your blob's name is actually ProcessingFilesSampleFile.xml. This is why it appears that the subfolder disappears when you delete the blob.



            Just to drive the point home a bit further: let's say you had a thousand blobs, spread across multiple "subfolders" and you tried filtering on just the one subfolder (ProcessingFiles in your case). The search would still scan all thousand blobs, filtering on the prefix part of the name you specified.






            share|improve this answer




























              3














              Azure Storage doesn't have subfolders, only containers and blobs. Azure Storage gives you something that looks like folders via the delimiter character (letting you do specific searches, for instance).



              Your blob's name is actually ProcessingFilesSampleFile.xml. This is why it appears that the subfolder disappears when you delete the blob.



              Just to drive the point home a bit further: let's say you had a thousand blobs, spread across multiple "subfolders" and you tried filtering on just the one subfolder (ProcessingFiles in your case). The search would still scan all thousand blobs, filtering on the prefix part of the name you specified.






              share|improve this answer


























                3












                3








                3







                Azure Storage doesn't have subfolders, only containers and blobs. Azure Storage gives you something that looks like folders via the delimiter character (letting you do specific searches, for instance).



                Your blob's name is actually ProcessingFilesSampleFile.xml. This is why it appears that the subfolder disappears when you delete the blob.



                Just to drive the point home a bit further: let's say you had a thousand blobs, spread across multiple "subfolders" and you tried filtering on just the one subfolder (ProcessingFiles in your case). The search would still scan all thousand blobs, filtering on the prefix part of the name you specified.






                share|improve this answer













                Azure Storage doesn't have subfolders, only containers and blobs. Azure Storage gives you something that looks like folders via the delimiter character (letting you do specific searches, for instance).



                Your blob's name is actually ProcessingFilesSampleFile.xml. This is why it appears that the subfolder disappears when you delete the blob.



                Just to drive the point home a bit further: let's say you had a thousand blobs, spread across multiple "subfolders" and you tried filtering on just the one subfolder (ProcessingFiles in your case). The search would still scan all thousand blobs, filtering on the prefix part of the name you specified.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Jan 1 at 15:58









                David MakogonDavid Makogon

                57.1k15108154




                57.1k15108154
































                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53996851%2fdelete-azure-blobs-in-subfolder-in-c-sharp-without-deleting-the-subfolder%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Monofisismo

                    Angular Downloading a file using contenturl with Basic Authentication

                    Olmecas