6

到目前为止,我得到了我的句柄CloudFileDirectory,调用这个方法给了我一个 IListFileItem对象列表,给定的每个文件和目录 1 个CloudFileDirectory,但是我无法区分哪些是文件,哪些是目录

IListFileIteminclude上可用的属性Uri,这是一个System.Uri具有isFile成员的对象,但这对于我的文件目录显示为false 。

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

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

4

2 回答 2

11

我在这里找到了答案... RobinDotNet 的博客 Using the Azure Files preview with the Storage Client Library

将收到的转换IListFileItemCloudFile仅适用于文件,否则会导致null,并将其转换为CloudFileDirectory仅适用于目录。

我最终使用了Linq ...

var azureDirectories = myShare.GetRootDirectoryReference()
    .GetDirectoryReference(myPath)
    .ListFilesAndDirectories()
    .OfType<CloudFileDirectory>();

var azureFiles = myShare.GetRootDirectoryReference()
    .GetDirectoryReference(myPath)
    .ListFilesAndDirectories()
    .OfType<CloudFile>();
于 2015-07-13T12:06:51.500 回答
1

为了防止两次列出目录,您还可以执行以下操作:

CloudFileDirectory rootDir = myShare.GetRootDirectoryReference();
// Get directory items once
IEnumerable<IListFileItem> azureItems = rootDir.ListFilesAndDirectories();
CloudFileDirectory azureDirectories = azureItems.OfType<CloudFileDirectory>();
CloudFile azureFiles = azureItems.OfType<CloudFile>();
于 2017-08-25T18:32:47.293 回答