使用java将批量文件从一个s3文件夹移动到另一个s3文件夹

kx7yvsdv  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(620)

我在spring批处理中有一个方法,它将文件从s3 bucket中的一个文件夹“移动”(复制和删除)到同一个s3 bucket中的另一个文件夹。这种方法太费时了。有没有更好的办法?

public void moveMultipleFiles(List<File> files, String bucket, String fromFolder, String toFolder) {
        files.forEach(file -> {
            StringBuilder unProcessedFileName = new StringBuilder();
            unProcessedFileName.append(fromFolder);
            unProcessedFileName.append("/");
            unProcessedFileName.append(file.getName());

            StringBuilder processedFileName = new StringBuilder();
            processedFileName.append(toFolder);
            processedFileName.append("/");
            processedFileName.append(file.getName());

            CopyObjectRequest copyObjRequest = new CopyObjectRequest(bucket, unProcessedFileName.toString(), bucket,
                    processedFileName.toString());

            client.copyObject(copyObjRequest);
            client.deleteObject(new DeleteObjectRequest(bucket, unProcessedFileName.toString()));
        });
    }

上面的方法花费了太多时间,因为在每次批处理执行中,我都要移动1000多个文件。我使用executorservice尝试了以下方法。但这是不正确的工作。(有时一些文件移动不正确)

public void moveFilesMultiple(List<File> files, String bucket, String fromFolder, String toFolder) {
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        executorService.execute(new Runnable() {
            public void run() {
                files.forEach(file -> {
                    // file move code here
                });
            }
        });
    }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题