到目前为止,我处理了CloudFileDirectory
并调用此方法为我提供了IListFileItem
个对象的列表,给定CloudFileDirectory
中每个文件和目录的1个,但是我我无法区分哪些是文件,哪些是目录。
IListFileItem
上提供的属性包括Uri
,System.Uri
对象,其成员isFile
,但显示为 false 我的文件和我的目录。
我需要获取可以深入查看的目录列表,我可以使用的文件列表,但到目前为止我找不到过滤这个混合列表的方法。
我想不出有用的混合列表。我想知道为什么M $没有将ListFiles
和ListDirectories
公开为单独的方法。也许他们很难区分他们而放弃了。
答案 0 :(得分:5)
我在这里找到了答案... RobinDotNet's blog 将Azure文件预览与存储客户端库一起使用
将收到的IListFileItem
转换为CloudFile
仅适用于文件,否则生成null
,并将其转换为CloudFileDirectory
仅适用于目录。
我最终使用了Linq ......
var azureDirectories = myShare.GetRootDirectoryReference()
.GetDirectoryReference(myPath)
.ListFilesAndDirectories()
.OfType<CloudFileDirectory>();
var azureFiles = myShare.GetRootDirectoryReference()
.GetDirectoryReference(myPath)
.ListFilesAndDirectories()
.OfType<CloudFile>();
答案 1 :(得分:1)
为了防止列出目录两次,你也可以这样做:
CloudFileDirectory rootDir = myShare.GetRootDirectoryReference();
// Get directory items once
IEnumerable<IListFileItem> azureItems = rootDir.ListFilesAndDirectories();
CloudFileDirectory azureDirectories = azureItems.OfType<CloudFileDirectory>();
CloudFile azureFiles = azureItems.OfType<CloudFile>();