Как загрузить папку в облако Google, используя java? - PullRequest
0 голосов
/ 04 августа 2020

Раньше я работал в AWS, и я новичок в Google Cloud, в AWS был способ загружать каталоги / папку в корзину. Я провел небольшое исследование для загрузки каталога / папки в корзину Google Cloud, но не смог найти. Может ли кто-нибудь помочь мне, как добиться этого в Google Cloud, используя Java.

Ответы [ 2 ]

1 голос
/ 04 августа 2020

В клиентской библиотеке Google Cloud Storage (или даже в API) нет встроенных функций для автоматического выполнения. Вы должны рекурсивно загружать все свои файлы, управляя исследованием дерева папок.

С помощью интерфейса командной строки gcloud вы можете использовать команду gsutil cp -r .... -r означает «рекурсивный» , и он выполняет точно такую ​​же операцию.

0 голосов
/ 05 августа 2020

В клиентской библиотеке Google Cloud Storage для java не встроена функция загрузки папок, но я создал этот java код для загрузки папок в GCS, Я использовал Open JDK 8 и Debian

Прил. java

package com.example.app;

import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

import java.io.File;

public class App {
    public static void main(String[] args) throws IOException {
        //directory that you want to upload
        String dir = "/home/user/repo";

        // get the name of the parent directory
        String[] path = dir.split("/");
        String folder = path[path.length - 1];

        //get files in main directory
        File[] files = new File(dir).listFiles();

        // define your projectID & bucket name
        String bucket = "myawesomefolder";
        String projectId = "myawesomeprojectID";
        Storage storage = StorageOptions.newBuilder().setProjectId(projectId).build().getService();

        System.out.println("Uploading folder: " + folder);
        uploadFolder(files, folder, bucket, storage);
    }

    static void uploadFolder(File[] files, String folder, String bucket, Storage storage) throws IOException {
        for (File file : files) {
            if (!file.isHidden()) {
                // if it is a directory read the files within the subdirectory
                if (file.isDirectory()) {
                    String[] lpath = file.getAbsolutePath().split("/");
                    String lfolder = lpath[lpath.length - 1];
                    String xfolder = folder + "/" + lfolder;
                    uploadFolder(file.listFiles(), xfolder, bucket, storage); // Calls same method again.

                } else {
                    // add directory/subdirectory to the file name to create the file structure
                    BlobId blobId = BlobId.of(bucket, folder + "/" + file.getName());

                    //prepare object
                    BlobInfo blobInfo = BlobInfo.newBuilder(blobId).build();

                    // upload object
                    storage.create(blobInfo, Files.readAllBytes(Paths.get(file.getAbsolutePath())));
                    System.out.println("Uploaded: gs://" + bucket + "/" + folder + "/" + file.getName());
                }

            }

        }
    }
}
 

пом. xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>testGcs</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>7</source>
                    <target>7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-storage</artifactId>
            <version>1.111.2</version>
        </dependency>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-nio</artifactId>
            <version>0.121.2</version>
        </dependency>
    </dependencies>


</project>
...