Я занимаюсь разработкой функции Azure с использованием Java. Мне нужно перебрать все файлы в следующей папке
aDirectory/aSubdirectoryWithManyFiles/
В этом пути много файлов:
aDirectory/aSubdirectoryWithManyFiles/file1
aDirectory/aSubdirectoryWithManyFiles/file2
aDirectory/aSubdirectoryWithManyFiles/file3
aDirectory/aSubdirectoryWithManyFiles/file4
aDirectory/aSubdirectoryWithManyFiles/file5
поэтому я написал следующий код, чтобы получить их все:
// myCloudBlobContainer is a CloudBlobContainer
// I expected to get all files thanks to the next row
Iterable<ListBlobItem> blobs = myCloudBlobContainer.listBlobs();
// The only blob found in the container is the directory itself
for (ListBlobItem blob : blobs) {
//log the current blob URI
if (blob instanceof CloudBlob) { // this never happens
CloudBlob cloudBlob = (CloudBlob) blob;
//make nice things with every found file
}
}
Единственный большой двоичный объект, повторяемый в for
, - это каталог, а не ожидаемые файлы. поэтому в логах я получаю только следующий URI:
https://blablablabla.blob.core.windows.net/aDirectory/aSubdirectoryWithManyFiles/
Что я должен сделать, чтобы получить доступ к каждому файлу?
А в случае, если у меня будет более одного подкаталога, как в следующем примере?
aDirectory/aSubdirectoryWithManyFiles/files(1-5)
aDirectory/anotherSubdirectoryWithManyFiles/files(6-10)
Заранее спасибо
Редактировать
Для того, чтобы сделать методы тестируемыми, проект использует обертки и интерфейсы, вместо того, чтобы напрямую использовать CloudBlobContainer; в основном, CloudBlobContainer задается как CloudBlobClient.getContainerReference("containername")
После ответа на этот вопрос я изменил код на следующий
поэтому я использовал listBlobs с параметрами myCloudBlobContainer.listBlobs("aDirectory", true)
и написал следующий код, чтобы получить их все:
// myCloudBlobClient is a CloudBlobClient
CloudBlobContainer myCloudBlobContainer = myCloudBlobClient.getContainerReference("containername")
// I expected to get all files thanks to the next row
Iterable<ListBlobItem> blobs = myCloudBlobContainer.listBlobs("aDirectory", true); // HERE THE CHANGE
// No blob found this time
for (ListBlobItem blob : blobs) { // NEVER IN THE FOR
//log the current blob URI
if (blob instanceof CloudBlob) {
CloudBlob cloudBlob = (CloudBlob) blob;
//make nice things with every found file
}
}
Но на этот раз в for
...
ничего не происходит