Загрузка байтового диапазона объекта из Google Cloud Storage с использованием Java SDK - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь загрузить диапазон байтов из Google Cloud Storage , используя их Java SDK .

Я могу загрузить весь файл, как этот.

Storage mStorage; // initialized and working

Blob blob = mStorage.get(pBucketName, pSource);

try (ReadChannel reader = mStorage.reader(blob.getBlobId())) {
    // read bytes from read channel
}

Если я хочу, я могу ReadChannel#seek(long), пока не достигну желаемого начального байта, и загрузить диапазон с этой точки, но это кажется неэффективным (хотя я точно не знаю, что происходит в реализации.)

В идеале я хотел бы указать заголовок Range: bytes=start-end в виде , показанный в API REST Google Cloud Storage , но я не могу понять, как установить заголовок в Java.

Как указать диапазон байтов в вызове get Java SDK Storage или указать заголовок, чтобы я мог эффективно загрузить нужный диапазон байтов?

1 Ответ

0 голосов
/ 18 июня 2019

Это хороший пример для чтения содержимого объекта. В этой ссылке есть больше кодовых решений:

Потоковый файл из Google Cloud Storage

  /**
   * Example of reading a blob's content through a reader.
   */
  // [TARGET reader(String, String, BlobSourceOption...)]
  // [VARIABLE "my_unique_bucket"]
  // [VARIABLE "my_blob_name"]
  public void readerFromStrings(String bucketName, String blobName) throws IOException {
    // [START readerFromStrings]
    try (ReadChannel reader = storage.reader(bucketName, blobName)) {
      ByteBuffer bytes = ByteBuffer.allocate(64 * 1024);
      while (reader.read(bytes) > 0) {
        bytes.flip();
        // do something with bytes
        bytes.clear();
      }
    }
    // [END readerFromStrings]
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...