//pom配置
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
<version>2.22.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
// 代码
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Paths;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
@Service
public class GoogleCloudStorageService {
private static final String CREDENTIALS_FILE_PATH = "auth*********.json";
private static final String CLOUD_STORAGE_BUCKET = "*************";
private final Storage storage;
public GoogleCloudStorageService() throws IOException {
this.storage = initializeStorage();
}
private Storage initializeStorage() throws IOException {
ClassPathResource resource = new ClassPathResource(CREDENTIALS_FILE_PATH);
try (InputStream inputStream = resource.getInputStream()) {
GoogleCredentials credentials = GoogleCredentials.fromStream(inputStream)
.createScoped("https://www.googleapis.com/auth/devstorage.read_only");
return StorageOptions.newBuilder()
.setCredentials(credentials)
.build()
.getService();
}
}
public void downloadReport(String reportPath, String localFilePath) throws IOException {
BlobId blobId = BlobId.of(CLOUD_STORAGE_BUCKET, "stats/store_performance/store_performance_com.miolive.music_202411_traffic_source.csv");
Blob blob = storage.get(blobId);
if (blob == null) {
throw new IOException("Report not found: " + reportPath);
}
blob.downloadTo(Paths.get(localFilePath));
}
}