我在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
});
}
});
}
暂无答案!
目前还没有任何答案,快来回答吧!