Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在尝试使用java sdk为AWS S3执行恢复上载。但它总是从零开始上传_Java_Aws Sdk Java 2.0_Aws Sdk Java - Fatal编程技术网

正在尝试使用java sdk为AWS S3执行恢复上载。但它总是从零开始上传

正在尝试使用java sdk为AWS S3执行恢复上载。但它总是从零开始上传,java,aws-sdk-java-2.0,aws-sdk-java,Java,Aws Sdk Java 2.0,Aws Sdk Java,我试图上传一个AWS SDK文件,以演示由于任何原因导致的上传中断。但我看到它总是从一开始就上传。那里的代码非常直截了当,但问题在于保存持久的obj状态,以便我们可以在恢复上载时重用 这是我的密码: public class Upload2 { private static final File RESUME_UPLOAD_INFO = new File(System.getProperty("user.home"), "resumeUploadFile"); private static f

我试图上传一个AWS SDK文件,以演示由于任何原因导致的上传中断。但我看到它总是从一开始就上传。那里的代码非常直截了当,但问题在于保存持久的obj状态,以便我们可以在恢复上载时重用

这是我的密码:

public class Upload2 {

private static final File RESUME_UPLOAD_INFO = new File(System.getProperty("user.home"), "resumeUploadFile");
private static final boolean UPLOAD_HALF_AND_KILL = !RESUME_UPLOAD_INFO.exists();

private static Upload upload;

public static void main(String[] args) throws Exception
{
    log("Execution started");
    String bucket = "itpc123412";
    String key = "s3.txt";
    String file_path = "C:\\Users\\rkompelli\\Desktop\\abc3.txt";
    File f = new File(file_path);

    TransferManager tm = AWSConfiguration.getConnectionTransfer(); 
    System.out.println(RESUME_UPLOAD_INFO.exists());
    if (UPLOAD_HALF_AND_KILL)
    {
        PutObjectRequest por = new PutObjectRequest(bucket, key,f);
        log("Starting from scratch");
        upload = tm.upload(por, LISTENER);         
    }
    else
    {
        log("Starting again");
        upload = tm.resumeUpload(PersistableUpload.deserializeFrom(new FileInputStream(RESUME_UPLOAD_INFO)));
        upload.addProgressListener(LISTENER);
    }

    log("Total bytes to transfer: " + upload.getProgress().getTotalBytesToTransfer());
    log("Bytes transferred: " + upload.getProgress().getBytesTransferred());

    upload.waitForCompletion();
    log("Done");

    tm.shutdownNow();
    if (upload.isDone())
        RESUME_UPLOAD_INFO.delete();

    System.exit(0);
}

private static void log(String msg)
{
    System.out.println(DateFormat.getTimeInstance().format(new Date()) + ": " + msg);
}

private static long LAST_LOGGED_BYTES;
private static final S3ProgressListener LISTENER = new S3SyncProgressListener()
{
    @Override
    public void progressChanged(ProgressEvent pe)
    {
        long bytes = upload.getProgress().getBytesTransferred();
        if (pe.getEventType().isByteCountEvent())
        {
            if (LAST_LOGGED_BYTES == 0 || bytes - LAST_LOGGED_BYTES > 5)
            {
                LAST_LOGGED_BYTES = bytes;
                log("uploaded: " + NumberFormat.getNumberInstance().format(bytes));
            }
        }

        if (bytes > upload.getProgress().getTotalBytesToTransfer()/2 && UPLOAD_HALF_AND_KILL) 
        { 
            log("IF 2 in get progress"); 
            log("Exiting");
            System.exit(0); 
        }

    }

    @Override
    public void onPersistableTransfer(final PersistableTransfer pt)
    {
        // TODO should not be blocked
        try
        {
            log("Saving upload state");
            pt.serialize(new FileOutputStream(RESUME_UPLOAD_INFO));
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }           
};      
}
我注意到,
onPersistableTransfer()
事件没有执行,该事件包含序列化obj的代码