コード例 #1
0
        private void BuildDirNode(CloudBlobDirectory cloudDir, DirNode dirNode)
        {
            foreach (IListBlobItem item in cloudDir.ListBlobs(false, BlobListingDetails.Metadata, HelperConst.DefaultBlobOptions))
            {
                CloudBlob          cloudBlob   = item as CloudBlob;
                CloudBlobDirectory subCloudDir = item as CloudBlobDirectory;

                if (cloudBlob != null)
                {
                    if (CloudBlobHelper.MapStorageBlobTypeToBlobType(cloudBlob.BlobType) == this.BlobType)
                    {
                        FileNode fileNode = new FileNode(cloudBlob.GetShortName());
                        this.BuildFileNode(cloudBlob, fileNode);
                        dirNode.AddFileNode(fileNode);
                    }
                }
                else if (subCloudDir != null)
                {
                    var     subDirName = subCloudDir.GetShortName();
                    DirNode subDirNode = dirNode.GetDirNode(subDirName);

                    // A blob directory could be listed more than once if it's across table servers.
                    if (subDirNode == null)
                    {
                        subDirNode = new DirNode(subDirName);
                        this.BuildDirNode(subCloudDir, subDirNode);
                        dirNode.AddDirNode(subDirNode);
                    }
                }
            }
        }