2016-02-29 37 views
5

Sto provando a lavorare su come eliminare tutti i file in una cartella in Archiviazione file di Azure.Come si eliminano tutti i file in una cartella Archiviazione file di Azure?

CloudFileDirectory.ListFilesAndDirectories() restituisce un IEnumerable di IListFileItem. Ma questo non aiuta molto perché non ha una proprietà filename o simile.

Questo è quello che ho finora:

var folder = root.GetDirectoryReference("myfolder"); 

if (folder.Exists()) { 
    foreach (var file in folder.ListFilesAndDirectories()) { 

     // How do I delete 'file' 

    } 
} 

Come posso cambiare un IListFileItem ad un CloudFile così posso chiamare myfile.Delete()?

risposta

10

ListFilesAndDirectories può restituire sia file che directory in modo da ottenere una classe base per questi due. Quindi puoi verificare quale dei tipi è e cast. Nota che dovrai tenere traccia di tutte le sottodirectory in modo da poter cancellare in modo ricorsivo i file in esse contenuti.

var folder = root.GetDirectoryReference("myfolder"); 

if (folder.Exists()) 
{ 
    foreach (var item in folder.ListFilesAndDirectories()) 
    {   
     if (item.GetType() == typeof(CloudFile)) 
     { 
      CloudFile file = (CloudFile)item; 

      // Do whatever 
     } 

     else if (item.GetType() == typeof(CloudFileDirectory)) 
     { 
      CloudFileDirectory dir = (CloudFileDirectory)item; 

      // Do whatever 
     } 
    } 
} 
+0

Perfetto, grazie! Mi sono chiesto se questo potrebbe essere stato come farlo, ma i documenti MSDN su IListFileItem sono davvero poveri. – BG100