当文件不断写入目录时如何将目录中的文件上传到S3

时间:2018-11-24 18:10:11

标签: java amazon-web-services amazon-s3

因此,我正在使用TransferManager将目录中的所有文件上传到S3中 而且我也可以上传。 但是我在同一个dir文件中的问题也被写入了。 因此,如何调用该方法写入S3。 我必须在固定间隔上调用该方法吗? 请建议什么是调用该方法的最佳方法。

public void uploadDir(Path strFile,String strFileName){

        ArrayList<File> files = new ArrayList<File>();
        for (Path path : strFile) {
            files.add(new File(path.toString()));
        }

        TransferManager xfer_mgr = TransferManagerBuilder.standard().build();
        try {
            MultipleFileUpload xfer = xfer_mgr.uploadFileList(bucketName,strFileName, new File("."), files);
            //XferMgrProgress.showTransferProgress(xfer);
            //XferMgrProgress.waitForCompletion(xfer);
        } catch (AmazonServiceException e) {
            System.err.println(e.getErrorMessage());
            System.exit(1);
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以根据需要选择任何一种解决方案。

解决方案1:-对于像您这样的scanrio,您应该使用Ver 15.1 Distrib 10.1.36-MariaDB, for Win32 (AMD64)。而不是时间间隔。

  

FileAge:上次修改文件时,文件轮询器使用的这一通用概念是本地目录还是远程目录。

因此,以为您的文件占用了最多的空间。写入20秒,然后仅提取20s或更长时间的文件。

解决方案2:-

  

另一种方法是要求您的客户,生成文件的程序使用扩展名为.tmp的文件,当文件写入完成时,要求他们将其转换为实际的文件扩展名,并修改程序以跳过扩展名为.tmp的文件。   例如,在将fileAge写入abc.jpg的同时,完成文件写入后,将其重命名为abc.jpg.tmp

希望这会有所帮助。