UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【GCS】バケット内のリストを取得する

cloud.google.com

GCSのバケット内にあるオブジェクトのリストを作成するにはStorage.listを使う

Page<Blob> list = storage.list(<bucket-name>);
List<String> fileNameList = new ArrayList<>();
 for (Blob file : list.iterateAll()) {
    fileNameList.add(file.getName());
 }

ただ、これだとバケット内全てのオブジェクトのリストになってしまう

もし、次のオブジェクトのうち、file-*だけのリストを作りたい場合storage.get(bucketName, fileName)を使うと良さそう

  • file-1
  • file-2
  • other-1
  • other-2
List<String> fileNameList = IntStream.range(1, 2 + 1)
        .mapToObj(
            idx -> Blob blob = storage.get(bucketName, "file-{id}".replace("{id}", String.valueOf(idx)))
        )
        .filter(Objects::nonNull)
        .map(Blob::getName)
        .collect(Collectors.toList());