Java-Azure列表Blob目录

时间:2018-03-27 13:27:48

标签: java azure azure-storage azure-blob-storage

我试图通过迭代“文件夹”blob列表来获取容器中的虚拟目录。

folder(prefix) 
 |
 |-->somefile.ext

我注意到它只会抓取该文件夹(blob),如果其中有文件。

我需要能够抓取虚拟文件夹,即使它没有文件,所以我可以上传到它。

folder(prefix) 


for (ListBlobItem c : container.listBlobs("prefix")) {
if (c.getUri().toString().endsWith("/")){
//print blob
}
}

1 个答案:

答案 0 :(得分:2)

天蓝色blob存储中没有文件夹这样的东西。所以只能有空容器,而不是空文件夹。

文件夹是虚拟的,仅由于其中的blob而存在。 blob的路径定义了虚拟文件夹,这就是为什么你不能获得没有blob的虚拟文件夹的原因。

您可以通过设置新blob的路径来“创建”新文件夹。例如,通过上传名为“my_not_yet_existing_folder / myimage.jpg”的blob

例如(来自the docs的修改示例):

try
{
    // Retrieve storage account from connection-string.
    CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);

    // Create the blob client.
    CloudBlobClient blobClient = storageAccount.createCloudBlobClient();

   // Retrieve reference to a previously created container.
    CloudBlobContainer container = blobClient.getContainerReference("mycontainer");

    final String filePath = "C:\\myimages\\myimage.jpg";

    // Create or overwrite the "myimage.jpg" blob with contents from a local file.
    CloudBlockBlob blob = container.getBlockBlobReference("my_not_yet_existing_folder/myimage.jpg");
    File source = new File(filePath);
    blob.upload(new FileInputStream(source), source.length());
}
catch (Exception e)
{
    // Output the stack trace.
    e.printStackTrace();
}