2012-02-08 2 views
3

프로그래밍중인 소프트웨어에서 Azure의 blob 구조를 통해 가상 파일 시스템을 만들려고합니다.CloudBlobDirectory가 있는지 여부를 확인하는 방법은 무엇입니까?

여러 번 과정에서 나는 시스템으로부터 경로를 얻었고 그 경로가 Blob이거나 azure가 제공하는 가상 BlobDirectory인지 여부를 알아야합니다. 한 형식에서 다른 형식으로 캐스팅하고 오류를 처리하여이 작업을 수행했습니다.

그러나 이제 경로가 가상 디렉터리를 가리키는 경우이 가상 디렉터리의 존재 여부를 어떻게 확인할 수 있습니까? 당신이에는, getAttributes 방법을 사용할 수있는 경우

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

답변

7

블롭 저장소에서 디렉토리는 그 자체로 항목으로 존재하지 않습니다. 당신이 가질 수있는 것은 디렉토리에 있다고 해석 될 수있는 이름을 가진 얼룩입니다. 밑에있는 REST API을 보면 디렉토리에 아무것도 없다는 것을 알 수 있습니다. 저장소 클라이언트 라이브러리가 디렉토리 이름으로 시작하여 구분 기호로 시작하는 blob을 검색하고 있습니다. "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

질문에 대한 오해가 있습니다. 디렉토리는 블롭에 물리적으로 존재하지 않습니다. Knightpfhor와 마찬가지로 blob을 "dirA/dirB/a.txt"로 명명하면 dirA 및 dirB 디렉토리와 비슷하게 보입니다. 나는 Knightpfhor에 따라 디렉토리가 있는지 확인하고 있습니다. –

관련 문제