从Android的亚马逊s3下载对象使文件不可读

时间:2016-06-11 20:47:00

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

目前,我正在尝试下载亚马逊s3上的存储桶中的文件。我正在使用这段代码进行调试,因为当我最后尝试从文件中读取时,总是找不到EN0ENT /文件。

       String str_FilePathInDevice = "/sdcard/" + "/"
                + "RestoreFolderName" + "/" + "filname.extention";

        File file = new File(str_FilePathInDevice);

        String str_Path = file.getPath().replace(file.getName(), "");
        File filedir = new File(str_Path);

        try {
            filedir.mkdirs();
            file.createNewFile();
        } catch (Exception ex1) {
        }

        System.out.println(file.toString());
        System.out.println(file.canRead());
        System.out.println(file.length());

        TransferObserver observer2 = transferUtility.download(
                "arabianbucket",        /* The bucket to upload to */
                "demo.txt",       /* The key for the uploaded object */
                file        /* The file where the data to upload exists*/
        );

        System.out.println(file.toString());
        System.out.println(file.canRead());
        System.out.println(file.length());

file.canread()在transferutility.download链接之后最终从true翻转为false。我不太确定为什么会这样。有谁知道如何成功读取亚马逊s3中的对象?在我的清单中,我已经删除了权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

谢谢!

1 个答案:

答案 0 :(得分:0)

TransferUtility提供异步传输。在您的代码中transferUtility.download启动下载,并在后台线程中进行下载,以免阻塞主线程。在转移完成之前,我不建议任何文件操作。您可以将监听器附加到观察者并监听状态和进度更改。有关详细信息,请参阅{{3}}。