Мы хотим загрузить несколько файлов в 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, но не смог найти какой-либо метод для загрузки нескольких файлов с помощью одного вызова.
Если я зацикливаюсь и загружаю с помощью нескольких вызовов, он добавляетогромные накладные расходы сети и производительность очень низкая, что приложение не может себе позволить.
Мои вопросы:
- Можно ли загрузить несколько файлов с помощью одного вызова, либо с использованием JavaAPI или REST API?
- Не могли бы вы привести пример?