Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

フォルダをBLOBにコピー

例によってリハビリサンプルです。あまり参考になるコードでないのです。実用的に使うなら、Powershellのツールを使うと無問題でしょうか。

  • C#相対パスを取りたい場合なにかライブラリなかたっけ?
  • BLOBコンテナを削除して、すぐ作成できたっけ?(開発ストレージではできたけど、コピー量が小さいからですかね)
  • バックスラをスラに変換するAPIは?Apache IOにあったなと思った私はJavaに毒されてる。
        public static void CopyToBlob(string sourceFolder)
        {
            var dir = new DirectoryInfo(sourceFolder);
            Console.WriteLine(dir.Name);

            // BLOBコンテンナの作成
            var account = CloudStorageAccount.DevelopmentStorageAccount;
            var client = account.CreateCloudBlobClient();
            var container = client.GetContainerReference(dir.Name);

            // 既存のコンテナ削除
            if (container.Exists())
            {
                container.Delete();
                Console.WriteLine("container deleted");
            }

            // コンテナ作成
            container.CreateIfNotExists();
            foreach (var f in dir.GetFiles("*", SearchOption.AllDirectories))
            {
                var name = f.FullName.Replace(dir.FullName + @"\", "");
                Console.WriteLine(name);
                var blob = container.GetBlockBlobReference(name.Replace(@"\", "/"));
                using (var stream = File.OpenRead(f.FullName))
                {
                    blob.UploadFromStream(stream);
                }
            }
            Console.WriteLine("done");
            Console.ReadKey();
        }
    }