2015-07-10 26 views
1

到目前爲止,我得到一個手柄上我CloudFileDirectory和調用這個方法讓我IListFileItem對象,1每個文件和目錄在給定CloudFileDirectory的名單,但我無法區分哪個是文件的,哪些是目錄。在IListFileItem可用AzureStorage CloudFileDirectory.ListFilesAndDirectories毫無價值?

屬性包括:Uri,這是一個System.Uri對象,它有一個isFile成員,但這顯示了爲我的文件我的目錄。

我需要得到我可以鑽入的目錄列表,我可以使用的文件列表,但到目前爲止我找不到一種方法來過濾這個混合列表。

我想不出一個有用的混合列表。我想知道爲什麼M $不會將ListFilesListDirectories作爲單獨的方法曝光。也許他們很難區分他們並放棄。

回答

2

我在這裏找到了答案...... RobinDotNet's blog使用Azure的文件預覽與存儲客戶端庫

鑄造接收IListFileItemCloudFile僅適用於文件,否則造成null,和鑄造它爲CloudFileDirectory只適用於目錄。

我結束了使用LINQ ...

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

var azureFiles = myShare.GetRootDirectoryReference() 
    .GetDirectoryReference(myPath) 
    .ListFilesAndDirectories() 
    .OfType<CloudFile>(); 
0

爲了防止列出該目錄的兩倍,你也可以這樣做:

CloudFileDirectory rootDir = myShare.GetRootDirectoryReference(); 
// Get directory items once 
IEnumerable<IListFileItem> azureItems = rootDir.ListFilesAndDirectories(); 
CloudFileDirectory azureDirectories = azureItems.OfType<CloudFileDirectory>(); 
CloudFile azureFiles = azureItems.OfType<CloudFile>();