BG1*_*100 7 c# azure azure-storage delete-file azure-storage-files
我正在尝试如何删除Azure文件存储中的文件夹中的所有文件.
CloudFileDirectory.ListFilesAndDirectories()返回IEnumerable的IListFileItem.但这没有多大帮助,因为它没有文件名属性或类似功能.
这是我到目前为止:
var folder = root.GetDirectoryReference("myfolder");
if (folder.Exists()) {
foreach (var file in folder.ListFilesAndDirectories()) {
// How do I delete 'file'
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能改变一个IListFileItem到CloudFile,所以我可以打电话myfile.Delete()?
Emi*_*ner 14
ListFilesAndDirectories可以返回文件和目录,以便为这两个文件获取基类.然后你可以检查它是什么类型和铸造.请注意,您将要跟踪任何子目录,以便递归删除其中的文件.
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
采用现有答案,修复了一些错误并创建了一个扩展方法来递归删除目录
public static async Task DeleteAllAsync(this ShareDirectoryClient dirClient) {
await foreach (ShareFileItem item in dirClient.GetFilesAndDirectoriesAsync()) {
if (item.IsDirectory) {
var subDir = dirClient.GetSubdirectoryClient(item.Name);
await subDir.DeleteAllAsync();
} else {
await dirClient.DeleteFileAsync(item.Name);
}
}
await dirClient.DeleteAsync();
}
Run Code Online (Sandbox Code Playgroud)
称呼它为
var dirClient = shareClient.GetDirectoryClient("test");
await dirClient.DeleteAllAsync();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5173 次 |
| 最近记录: |