Как загрузить несколько файлов в Google Cloud Storage за один вызов, используя Java API? - PullRequest
0 голосов
/ 08 декабря 2018

Мы хотим загрузить несколько файлов в Google Cloud Storage.В настоящее время мы загружаем одну за другой, используя Google Java API.Код ниже:

public void uploadFile(File srcFile,String bucketName, String destPath) throws IOException {
      BlobId blobId = BlobId.of(bucketName, srcFile.getName());
      BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build();

  long startTime = System.currentTimeMillis();

 // Blob blob = storage.create(blobInfo,new FileInputStream(srcFile));

  try (WriteChannel writer = storage.writer(blobInfo)) {
    try (FileInputStream in = new FileInputStream(srcFile)){


        byte[] buffer = new byte[1024 * 1024 * 100] ;

        writer.setChunkSize(buffer.length);

        int readSize = 0;

        while((readSize = in.read(buffer)) > 0) {
             writer.write(ByteBuffer.wrap(buffer, 0, readSize));
        }

        long endTime = System.currentTimeMillis();

      double writeTime = (double)(endTime - startTime) / 1000;

      System.out.println("File write time : " + writeTime);

    }
  }


}

Наше приложение хочет загружать несколько файлов одновременно.Я попытался найти метод для загрузки нескольких файлов в Java API, но не смог найти какой-либо метод для загрузки нескольких файлов с помощью одного вызова.

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

Мои вопросы:

  1. Можно ли загрузить несколько файлов с помощью одного вызова, либо с использованием JavaAPI или REST API?
  2. Не могли бы вы привести пример?

1 Ответ

0 голосов
/ 08 декабря 2018

Ни в библиотеке google-cloud-java, ни в базовом JSON API нет вызова API для загрузки нескольких файлов, но вы можете выполнить то, что вы пытаетесь сделать, создав несколько потоков и попросив каждый поток загрузить файл.Опция gsutil -m делает это следующим образом.

...