为了账号安全,请及时绑定邮箱和手机立即绑定

获取 Azure 文件共享中的所有文件 (CloudFileDirectory)

获取 Azure 文件共享中的所有文件 (CloudFileDirectory)

C#
慕斯王 2022-11-13 15:48:38
我正在寻找一种 C# 方法,它将返回 Azure 文件共享中的所有文件(在所有子目录中)。有一个例子,但它会引发运行时错误。我已经尝试了从这里获得的下面的代码示例,但是它引发了异常。我已将代码粘贴到此处,但如果有人有遍历整个 Azure 目录的方法,那么获取文件会很棒。CloudFileDirectory dir = fclient.GetShareReference(share.ToString()).GetRootDirectoryReference();foreach (IListFileItem file in dir.ListFilesAndDirectories())   //.Directory.ListFilesAndDirectories()){    list_subdir(file);}   和方法。public static void list_subdir(IListFileItem list){    Console.WriteLine("subdir");    CloudFileDirectory fileDirectory = (CloudFileDirectory)list;    IEnumerable<IListFileItem> fileList = fileDirectory.ListFilesAndDirectories();    foreach (IListFileItem listItem in fileList)    {        if (listItem.GetType() == typeof(Microsoft.WindowsAzure.Storage.File.CloudFileDirectory))        {            list_subdir(listItem);        }        else        {            Console.WriteLine(listItem.Uri.Segments.Last());        }    }}" 在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.d__1 1.MoveNext() in C:\Program Files (x86)\Jenkins\workspace\dotnet-split-pr-master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 82--- End of stack trace from previous location where exception was thrown ---   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)   at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.<>c__DisplayClass0_01.b__0() 在 C:\Program Files (x86)\Jenkins\workspace\dotnet-split-pr-master\Lib\ClassLibraryCommon\Core\Executor\ Executor.cs:第 41 行
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

我安装了 nuget 包WindowsAzure.Storage 9.3.3 版。下面的代码对我来说很好用,列出了子目录中的所有文件。


        static void Main(string[] args)

        {

            string accountName = "xxx";

            string key = "xxxx";

            var storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, key), true);

            var share = storageAccount.CreateCloudFileClient().GetShareReference("testfolder");

            IEnumerable<IListFileItem> fileList = share.GetRootDirectoryReference().ListFilesAndDirectories();

            foreach (IListFileItem listItem in fileList)

            {

                if (listItem.GetType() == typeof(CloudFile))

                {

                    Console.WriteLine(listItem.Uri.Segments.Last());

                }

                else if(listItem.GetType() == typeof(CloudFileDirectory))

                {

                    list_subdir(listItem);

                }

            }


            Console.WriteLine("done now");

            Console.ReadLine();

        }


        public static void list_subdir(IListFileItem list)

        {

            //Console.WriteLine("subdir");

            CloudFileDirectory fileDirectory = (CloudFileDirectory)list;

            IEnumerable<IListFileItem> fileList = fileDirectory.ListFilesAndDirectories();


            foreach (IListFileItem listItem in fileList)

            {

                if (listItem.GetType() == typeof(CloudFileDirectory))

                {

                    list_subdir(listItem);

                }

                else

                {

                    Console.WriteLine(listItem.Uri.Segments.Last());

                }

            }


        }


查看完整回答
反对 回复 2022-11-13
  • 1 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信