Каталог BLOB-объектов для списка Java- Azure

Я пытаюсь захватить виртуальный каталог в контейнере, перебирая список «папок».

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

Я заметил, что он захватит эту папку (blob), только если в ней есть файл.

Мне нужно получить виртуальную папку, даже если в ней нет файлов, чтобы я мог загрузить в нее.

folder(prefix) 


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

person Doc Holiday    schedule 27.03.2018    source источник


Ответы (1)


В лазурном хранилище BLOB-объектов нет такой вещи, как папка. Таким образом, могут быть только пустые контейнеры, а не пустые папки.

Папки виртуальны и существуют только благодаря содержащимся в них каплям. Путь к BLOB-объекту определяет виртуальные папки, поэтому вы не можете получить виртуальную папку без BLOB-объектов.

Вы можете «создать» новую папку, задав путь к новому BLOB-объекту. Например, загрузив большой двоичный объект с именем "my_not_yet_existing_folder / myimage.jpg"

Например (измененный пример из документы):

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();
}
person Peter Bons    schedule 27.03.2018