使用 C# 从 azure 文件存储递归获取文件

2024-03-03

我想编写一个程序来从天蓝色文件存储中获取文件,但问题是目录深度未定义并且isFile文件的属性始终返回 false。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Microsoft.Azure; // Namespace for Azure Configuration Manager
using Microsoft.WindowsAzure.Storage; // Namespace for Storage Client Library
using Microsoft.WindowsAzure.Storage.Blob; // Namespace for Blob storage
using Microsoft.WindowsAzure.Storage.File; // Namespace for File storage

namespace AzureStorage
{
    class Program
    {
        static void Main(string[] args)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

            //CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            // Create a CloudFileClient object for credentialed access to File storage.
            CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

            // Get a reference to the file share we created previously.
            CloudFileShare share = fileClient.GetShareReference("my-FileShare");

            // Ensure that the share exists.
            if (share.Exists())
            {
                // Get a reference to the root directory for the share.
                CloudFileDirectory rootDir = share.GetRootDirectoryReference();


                // Get a reference to the directory we created previously.
                CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("FILES");

                // Ensure that the directory exists.
                if (sampleDir.Exists())
                {
                    var directoryLists = sampleDir.ListFilesAndDirectories();
                    //sampleDir.ge
                    foreach (var yearDirTemp in directoryLists)
                    {
                        var yearDir = sampleDir.GetDirectoryReference(
                                        Path.GetFileNameWithoutExtension(yearDirTemp.Uri.LocalPath)
                                        );
                        foreach (var monthDirTemp in yearDir.ListFilesAndDirectories())
                        {
                            var monthDir = yearDir.GetDirectoryReference(
                                            Path.GetFileNameWithoutExtension(monthDirTemp.Uri.LocalPath)
                                            );
                            foreach (var patientDirTemp in monthDir.ListFilesAndDirectories())
                            {
                                var patientDir = monthDir.GetDirectoryReference(
                                                   Path.GetFileNameWithoutExtension(patientDirTemp.Uri.LocalPath)
                                                   );
                                foreach (var patientDataTemp in patientDir.ListFilesAndDirectories())
                                {
                                    var patientData = patientDir.GetDirectoryReference(
                                                   Path.GetFileNameWithoutExtension(patientDataTemp.Uri.LocalPath)
                                                   );

                                   var fileList = patientData.ListFilesAndDirectories();
                                    foreach(var fileTemp in fileList)
                                    {
                                        // Here fileTemp could be file 
                                        // or directory containing more child directories
                                        var file1 = patientData.GetFileReference(Path.GetFileName(fileTemp.Uri.LocalPath));
                                        file1.FetchAttributes();
                                        byte[] arrTarget = new byte[file1.Properties.Length];
                                        file1.DownloadToByteArray(arrTarget, 0);                                        
                                    }

                                }
                            }

                        }                        
                    }
                }
            }
        }
    }
}

    public static void list_file()
    {
        //***** Get list of all files/directories on the file share*****//
        CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("xxxxxxxxxxxxxxxxxxxxxx_AzureStorageConnectionString"));
        CloudFileClient fileClient = cloudStorageAccount.CreateCloudFileClient();
        CloudFileShare fileShare = fileClient.GetShareReference("dummyfile");

        // List all files/directories under the root directory.
        Console.WriteLine("Getting list of all files/directories under the root directory of the share.");

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

        // Print all files/directories listed above.
        foreach (IListFileItem listItem in fileList)
        {
            // listItem type will be CloudFile or CloudFileDirectory.
            Console.WriteLine(listItem.Uri.Segments.Last());
            Console.WriteLine(listItem.GetType());
            if(listItem.GetType()== typeof(Microsoft.WindowsAzure.Storage.File.CloudFileDirectory))
            {

                list_subdir(listItem);
            }
        }
    }
    public static void list_subdir(IListFileItem list)
    {
        Console.WriteLine("subdir");
        CloudFileDirectory fileDirectory=(CloudFileDirectory)list;
        IEnumerable<IListFileItem> fileList = fileDirectory.ListFilesAndDirectories();


        // Print all files/directories in the folder.
        foreach (IListFileItem listItem in fileList)
        {
            // listItem type will be CloudFile or CloudFileDirectory.
            Console.WriteLine(listItem.Uri.Segments.Last());
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 从 azure 文件存储递归获取文件 的相关文章

  • C 编程 - 文件 - fwrite

    我有一个关于编程和文件的问题 while current NULL if current gt Id Doctor 0 current current gt next id doc current gt Id Doctor if curre
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • asp.net core / kestrel中的线程管理

    我正在解决我们已迁移到 asp net core 2 0 的 asp net 应用程序的性能 可扩展性问题 我们的应用程序作为应用程序服务托管在 azure 上 并且在任何中等流量的情况下都很容易崩溃 让我困惑的一件事是如何处理多个并发请求
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 在 Azure Pipeline 中出现“在默认池中找不到满足指定需求的代理”错误

    我对 Azure DevOps 还比较陌生 我在 Windows 2016 服务器上安装了 Azure DevOps Server 2019 我使用经典编辑器创建了一个 Azure 管道 我的代理作业有四个步骤 安装节点 npm insta
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • Azure 搜索 .net SDK-如何使用“FindFailedActionsToRetry”?

    使用 Azure Search net SDK 当您尝试对文档建立索引时 可能会遇到异常IndexBatchException 从这里的文档 https azure microsoft com en us documentation art
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 重载<<的返回值

    include
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • IEEE 754:为什么谓词 == 和 != 没有发出信号?

    注意 了解IEEE 754 请耐心等待 IEEE 754 2008 表 5 2 列出了五个无序信号谓词及其否定 当关系无序时 它们会导致无效操作异常 该无效操作异常可以防止使用以下代码编写的程序中出现意外的安静 NaN 标准谓词 gt 及其
  • MongoDB Atlas 和适用于 AWS 的 MongoDB Atlas 有什么区别

    在调查物联网数据存储的兼容数据库期间 我研究了 MongoDB 发现定价有点令人困惑 只是想知道有什么区别MongoDB 阿特拉斯 https www mongodb com cloud atlas pricing and 适用于 AWS
  • 提供大型 CSS 文件

    我有一个大约 50k 的大型压缩 CSS 文件 大约有 30 个页面引用了该文件 将 CSS 分离到一个基本文件中 每个页面都有单独的 CSS 文件会显着减少加载时间 还是提供一个大文件实际上是相同的 谢谢 我不完全确定你的意思 但是提供一
  • iOS 中的裁剪区域与选定区域不同?

    这是github上的链接https github com spennyf cropVid tree master https github com spennyf cropVid tree master您自己尝试一下 看看我在说什么 测试需
  • 连续改变 UISlider 拇指图像上 UILabel 的值

    我有一个UISlider 最少 1 个 最多 10 个 我希望它的拇指有一个UILabel放置在它的顶部 在移动时不断更新和更改其文本UISlider的拇指 所以 我从UISlider并添加了一个UILabel但一旦拇指移动 标签似乎会覆盖
  • Cuda C++ 设备代码中没有元组吗?

    global void addKernel int c const int a const int b int i threadIdx x auto lamb int x return x 1 Works auto t std make t
  • Keras 中 Conv1d 中的 input_shape 变量如何工作?

    再见 我正在 Keras 上使用 CNN 1d 但我在输入形状变量方面遇到了很多麻烦 我有一个包含 100 个时间步长和 5 个带有布尔标签的特征的时间序列 我想训练一个使用长度为 10 的滑动窗口的 CNN 1d 这是我编写的非常简单的代
  • 如何将按组绘图元素叠加到 ggplot2 方面?

    我的问题与分面有关 在下面的示例代码中 我查看了一些分面散点图 然后尝试在每个方面覆盖信息 在本例中为平均线 tl dr 版本是我的尝试失败了 要么我添加的平均线计算所有数据 不尊重方面变量 要么我尝试编写一个公式 但 R 抛出错误 然后是
  • 传递带有自定义数据属性的函数

    是否可以传递具有自定义数据属性的函数 这不起作用 div div function hello console log hello 当我获得该属性时 它是一个值为 hello 的字符串而不是函数 怎么解决这个问题呢 你可以这样做 div d
  • 是否可以在 git-extensions 中为特定文件扩展名设置 diff/merge-tool ?

    我刚刚开始使用 LabView 进行开发 这对我来说是全新的 我想使用 git 扩展来处理我的版本控制 由于源位于 vi格式 我无法使用普通的 diff 工具 源是二进制的 幸运的是 LabView 附带了专用的差异和合并工具 这似乎非常有
  • 关于真实的表示可以假设什么?

    该程序返回0在我的机器上 include
  • HTML 数据在 Android 中从 json webservice 获取的 Webview 中无法正确显示?

    我正在使用 json webservice 从服务器获取 HTML 数据并在 webview 中显示 在 iPhone 中可以完美显示屏幕尺寸 但在 Android 中则不能完美显示 这里我放下了webservice链接和代码以及andro
  • Gemfile.lock 应该包含在 .gitignore 中吗?

    我对捆绑器及其生成的文件有点陌生 我有一份来自 GitHub 的 git 存储库副本 该存储库由很多人贡献 因此我惊讶地发现捆绑程序创建了一个存储库中不存在且不在 gitignore list 因为我已经分叉了它 所以我知道将它添加到存储库
  • Javascript 书签在 Firefox 41 中停止工作

    在 Firefox 41 中 小书签 带有javascript 网址 例如javascript alert it works 从点击或关键字运行 停止工作 有没有什么解决办法可以使用javascript Firefox 41 中的书签 以前
  • OpenID Connect 使用 Office 365 和 spring security 登录

    我需要配置OpenID 连接用一个春季安全过滤器以授权使用我的 Rest API Web 我找到了一个谷歌登录示例 http www baeldung com spring security openid connect 但就我而言 我需要
  • 如何删除两个单词之间的字符串

    我正在使用下面的代码行下载网页 WebRequest request WebRequest Create strURL WebResponse response request GetResponse Stream data respons
  • 根据先前的下拉列表选择显示第二个下拉列表

    首先 我讨厌提出一个已经处理过的问题 但你应该知道我在这个网站上找到的其他选项对我不起作用 基本上 我想构建一个简短的表单 其中有两个下拉框 第一个始终显示 第二个默认隐藏 当选择第一个下拉框中的某个选项时 我希望显示第二个下拉框 这是我的
  • 黑莓开发上的脚本语言?

    据我所知 开发 Blackberry 应用程序的首选方法是 Java 这是吗only way 我梦想有一个快速的应用程序环境 您可以在其中创建 GUI 使用 Blackberry UI 组件 类似于 Blackberry 上的 Tcl Tk
  • 循环遍历矩阵的对角线+1

    我需要循环遍历对角线 1 即对角线右侧的值 1 列 并将值写入数据帧中的列 write csv data frame matrix 1 2 matrix 2 3 matrix 3 4 如何使用函数来做到这一点 而不是仅仅列出值的所有位置 实
  • 使用 C# 从 azure 文件存储递归获取文件

    我想编写一个程序来从天蓝色文件存储中获取文件 但问题是目录深度未定义并且isFile文件的属性始终返回 false using System using System Collections Generic using System Lin