AzureStorage CloudFileDirectory.ListFilesAndDirectories一文不值?

时间:2015-07-10 11:59:05

标签: azure-storage-files

到目前为止,我处理了CloudFileDirectory并调用此方法为我提供了IListFileItem个对象的列表,给定CloudFileDirectory中每个文件和目录的1个,但是我我无法区分哪些是文件,哪些是目录

IListFileItem上提供的属性包括UriSystem.Uri对象,其成员isFile,但显示为 false 我的文件我的目录。

我需要获取可以深入查看的目录列表,我可以使用的文件列表,但到目前为止我找不到过滤这个混合列表的方法。

我想不出有用的混合列表。我想知道为什么M $没有将ListFilesListDirectories公开为单独的方法。也许他们很难区分他们而放弃了。

2 个答案:

答案 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>();