Solución:
ListFilesAndDirectories
puede devolver tanto archivos como directorios para que obtenga una clase base para esos dos. A continuación, puede comprobar cuál es el tipo y emitir. Tenga en cuenta que querrá realizar un seguimiento de los subdirectorios para poder eliminar de forma recursiva los archivos en esos.
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
}
}
}
Esta versión recursiva funciona si tiene ‘directorios’ dentro de su ‘directorio’
public void DeleteOutputDirectory()
{
var share = _fileClient.GetShareReference(_settings.FileShareName);
var rootDir = share.GetRootDirectoryReference();
DeleteDirectory(rootDir.GetDirectoryReference("DirName"));
}
private static void DeleteDirectory(CloudFileDirectory directory)
{
if (directory.Exists())
{
foreach (IListFileItem item in directory.ListFilesAndDirectories())
{
switch (item)
{
case CloudFile file:
file.Delete();
break;
case CloudFileDirectory dir:
DeleteDirectory(dir);
break;
}
}
directory.Delete();
}
}
Tomó las respuestas existentes, corrigió algunos errores y creó un método de extensión para eliminar el directorio de forma recursiva
public static async Task DeleteAllAsync(this ShareDirectoryClient dirClient) {
var remaining = new Queue<ShareDirectoryClient>();
remaining.Enqueue(dirClient);
while (remaining.Count > 0) {
ShareDirectoryClient dir = remaining.Dequeue();
await foreach (ShareFileItem item in dir.GetFilesAndDirectoriesAsync()) {
if (item.IsDirectory) {
var subDir = dir.GetSubdirectoryClient(item.Name);
await DeleteAllAsync(subDir);
} else {
await dir.DeleteFileAsync(item.Name);
}
}
await dir.DeleteAsync();
}
}
Llámalo como
var dirClient = shareClient.GetDirectoryClient("test");
await dirClient.DeleteAllAsync();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)