2012-02-08 64 views
3

私がプログラミングしているソフトウェアで、私はAzureのブロブ構造上に仮想ファイルシステムを作成しようとしています。CloudBlobDirectoryが存在するかどうかを確認する方法は?

多くの回のプロセスで、私はシステムからのパスを取得し、そのパスがBlobか、またはazureが提供する仮想BlobDirectoryかどうかを知る必要があります。私はこれを、あるフォームから別のフォームにキャストし、エラーを処理することによって行いました。

しかし、パスが仮想ディレクトリを指していることがわかったら、この仮想ディレクトリが存在するかどうかをどのように確認できますか?あなたはgetAttributesメソッドを使用できるかどう

var blobDirectory = client.GetBlobDirectoryReference("Path_to_dir"); 

答えて

7

ブロブストレージでは、ディレクトリは単独でアイテムとして存在しません。あなたが持つことができるのは、ディレクトリにあると解釈できる名前を持つブロブです。基礎となるREST APIを見ると、そこにはディレクトリについて何もないことがわかります。ストレージクライアントライブラリがあなたのためにやっていることは、ディレクトリ名で始まり区切り文字で始まるブロブを探し出すことです。 "DirectoryA/DirectoryB/FileName.txt"。これが意味することは、ディレクトリが存在するためには、それがblobを含んでいなければならないということです。ディレクトリはあなたがどちらか試すことができますが存在するかどうかを確認するには:

var blobDirectory = client.GetBlobDirectoryReference("Path_to_dir"); 
bool directoryExists = blobDirectory.ListBlobs().Count() > 0 

または

bool directoryExists = client.ListBlobsWithPrefix("DirectoryA/DirectoryB/").Count() > 0 

は、私はちょうど数を取得するには、ディレクトリ内のすべてを一覧表示すると、その素晴らしいアイデアではないことを承知している、Iあなたがより良い方法を考え出すことができると確信しています。

0

わからない、それは例外を発生した場合、その後何のディレクトリが存在しないことを意味:

は、私は次のコードでCloudBlobDirectoryへの参照を取得することができます。私はブロブが存在するかどうかを確認するために同様のアプローチを使用しましたが、まだディレクトリでテストしていません。

+0

cloudBlobDirectoryオブジェクトにFetchAttributes()がありません –

+0

あなたの質問に誤解が生じたと思います。ディレクトリはBLOB上に物理的に存在しません。 Knightpfhorと同様に、 "dirA/dirB/a.txt"という名前のブロブを作成すると、dirAとdirBディレクトリのように見えます。私はKnightpfhorにディレクトリが存在することを確認するために従っています。 –

関連する問題