依赖坐标:

<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.13.2</version>
</dependency>

多线程并发下载文件代码示例:

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.DownloadFileRequest;
import com.aliyun.oss.model.DownloadFileResult;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.model.ObjectListing;

import java.io.File;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class OSSDownloadFileExample {
    private static final String endpoint = "your_endpoint";
    private static final String accessKeyId = "your_accessKeyId";
    private static final String accessKeySecret = "your_accessKeySecret";
    private static final String bucketName = "your_bucketName";
    private static final String objectName = "your_objectName";
    private static final String downloadFileDir = "your_downloadFileDir";

    public static void main(String[] args) {
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        ObjectListing objectListing = ossClient.listObjects(bucketName);
        for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
            String key = objectSummary.getKey();
            if (key.equals(objectName)) {
                ExecutorService executorService = Executors.newFixedThreadPool(5);
                DownloadFileRequest downloadFileRequest = new DownloadFileRequest(bucketName, objectName);
                downloadFileRequest.setDownloadFileDir(downloadFileDir);
                downloadFileRequest.setTaskNum(5);
                downloadFileRequest.setPartSize(1024 * 1024);
                downloadFileRequest.setThreadNum(5);
                DownloadFileResult downloadResult = ossClient.downloadFile(downloadFileRequest);
                Runnable progressRunnable = () -> {
                    while (!downloadResult.isDone()) {
                        System.out.println("Download progress: " + downloadResult.getConsumedBytes() + "/" + downloadResult.getTotalBytes());
                        try {
                            Thread.sleep(5000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                };
                executorService.execute(progressRunnable);
                break;
            }
        }

        ossClient.shutdown();
    }
}

上传文件进度代码示例:

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.event.ProgressEvent;
import com.aliyun.oss.event.ProgressEventType;
import com.aliyun.oss.event.ProgressListener;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;

import java.io.File;

public class OSSUploadFileExample {
    private static final String endpoint = "your_endpoint";
    private static final String accessKeyId = "your_accessKeyId";
    private static final String accessKeySecret = "your_accessKeySecret";
    private static final String bucketName = "your_bucketName";
    private static final String objectName = "your_objectName";
    private static final String uploadFilePath = "your_uploadFilePath";

    public static void main(String[] args) {
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

        PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(uploadFilePath));
        putObjectRequest.setProgressListener(new ProgressListener() {
            @Override
            public void progressChanged(ProgressEvent progressEvent) {
                if (progressEvent.getEventType() == ProgressEventType.REQUEST_BYTE_TRANSFER_EVENT) {
                    long bytes = progressEvent.getBytes();
                    System.out.println("Upload progress: " + bytes);
                }
            }
        });
        PutObjectResult putResult = ossClient.putObject(putObjectRequest);

        ossClient.shutdown();
    }
}
``
Java通过阿里云的OSSClient中DownloadFileRequest对象来多线程并发下载文件怎么做到每5秒中打印一次下载进度依赖坐标+代码演示顺便连带上传文件进度代码一起提供下

原文地址: https://www.cveoy.top/t/topic/g8zU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录