C# 以递归方式下载包含所有内容的文件夹,Sharpbox

C# 以递归方式下载包含所有内容的文件夹,Sharpbox,c#,dropbox-api,sharpbox,C#,Dropbox Api,Sharpbox,所以我设置了一个小应用程序,我想用它从我的公共Dropbox文件夹下载一个文件夹,并将其中的所有内容下载到虚拟机 如果我尝试: var publicFolder = dropBoxStorage.GetFolder("/Public"); string targetFile = @"C:\Users\Michael\"; dropBoxStorage.DownloadFile(publicFolder,@"WS",targetFile); WS-if文件夹包含我要下载的所有内容 但是,当我运行

所以我设置了一个小应用程序,我想用它从我的公共Dropbox文件夹下载一个文件夹,并将其中的所有内容下载到虚拟机

如果我尝试:

var publicFolder = dropBoxStorage.GetFolder("/Public");
string targetFile = @"C:\Users\Michael\";
dropBoxStorage.DownloadFile(publicFolder,@"WS",targetFile);
WS-if文件夹包含我要下载的所有内容

但是,当我运行代码时,我得到:
SharpBox不支持下载文件夹。 我花时间写了一个函数,可以递归下载文件夹。(不过还没有测试过)


它也可以与下面的代码配合使用

var PublicFolder = dropBoxStorage.GetFolder("/Public");
 if (PublicFolder != null && PublicFolder.ToList().Count > 0)
                {
 DownloadFolder(dropBoxStorage, PublicFolder as ICloudDirectoryEntry, targetPath);
}



public static void DownloadFolder(CloudStorage dropBoxStorage, ICloudDirectoryEntry remoteDir, string targetDir)
    {
        foreach (var fof in remoteDir.ToList())
        {

            if (fof is ICloudDirectoryEntry)
            {
                DirectoryInfo newDir = new DirectoryInfo(Path.Combine(targetDir, fof.Name));
                if (!newDir.Exists)
                {
                    Directory.CreateDirectory(Path.Combine(targetDir, fof.Name));
                }

                DownloadFolder(dropBoxStorage, fof as ICloudDirectoryEntry, Path.Combine(targetDir, fof.Name));
            }
            else
            {
                dropBoxStorage.DownloadFile(remoteDir, fof.Name, Path.Combine(targetDir));
            }

        }
    }

这与SharpBox的哪个版本有关?它在if语句的DownloadFolder行上也给出了一个错误。正如我所说的,它还没有经过测试。它可能还需要一些工作,这只是一般的想法。在您指定的情况下,您可能具有函数
DownloadFolder(dropBoxStorage,fsentry作为ICloudDirectoryEntry,Path.Combine(targetDir,fsentry.Name))的顶级权限取而代之。谢谢你的帮助
var PublicFolder = dropBoxStorage.GetFolder("/Public");
 if (PublicFolder != null && PublicFolder.ToList().Count > 0)
                {
 DownloadFolder(dropBoxStorage, PublicFolder as ICloudDirectoryEntry, targetPath);
}



public static void DownloadFolder(CloudStorage dropBoxStorage, ICloudDirectoryEntry remoteDir, string targetDir)
    {
        foreach (var fof in remoteDir.ToList())
        {

            if (fof is ICloudDirectoryEntry)
            {
                DirectoryInfo newDir = new DirectoryInfo(Path.Combine(targetDir, fof.Name));
                if (!newDir.Exists)
                {
                    Directory.CreateDirectory(Path.Combine(targetDir, fof.Name));
                }

                DownloadFolder(dropBoxStorage, fof as ICloudDirectoryEntry, Path.Combine(targetDir, fof.Name));
            }
            else
            {
                dropBoxStorage.DownloadFile(remoteDir, fof.Name, Path.Combine(targetDir));
            }

        }
    }