在android应用程序中从AmazonS3下载之前获取文件大小
我开发了一个应用程序,其中有一个异步任务,可以从AmazonS3服务器下载文件。 由于相关文件的大小相当大,我需要在下载时显示一个进度条,当螺旋进度条不断旋转并激怒用户时,它在这里看起来不太好。 我需要使用水平样式的进度条,我需要知道要下载的文件的大小。 在从AmazonS3下载之前,是否有人知道知道文件大小的方法 这是我使用的下载代码在android应用程序中从AmazonS3下载之前获取文件大小,android,amazon-s3,amazon,android-progressbar,Android,Amazon S3,Amazon,Android Progressbar,我开发了一个应用程序,其中有一个异步任务,可以从AmazonS3服务器下载文件。 由于相关文件的大小相当大,我需要在下载时显示一个进度条,当螺旋进度条不断旋转并激怒用户时,它在这里看起来不太好。 我需要使用水平样式的进度条,我需要知道要下载的文件的大小。 在从AmazonS3下载之前,是否有人知道知道文件大小的方法 这是我使用的下载代码 @Override protected Void doInBackground(Void... params) { Trans
@Override
protected Void doInBackground(Void... params) {
TransferManager manager = new TransferManager(access);
File file = new File(Environment.getExternalStorageDirectory()+"/Downloads", downFile);
fileDownloaded = "/Downloads/"+ downFile;
file.setWritable(true);
Download down = manager.download("files", fileToDown, file );
try {
down.waitForCompletion();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
“downFile”是我将其保存在外部目录中的文件位置。
“fileToDown”是要下载的服务器上的文件路径。
“/Downloads/”是我创建的用于在设备上存储文件的新目录。我假设您使用的代码如下所示
URL url = new URL(f_url[0]);
URLConnection conection = url.openConnection();
// getting file length
int lengthOfFile = conection.getContentLength();
// input stream to read file - with 8k buffer
InputStream input = new BufferedInputStream(url.openStream(), 8192);
方法getContentLength()
将返回文件的大小
更新1:
我查看了Amazon上关于TransferManager和Download类的java文档。有一些方法和侦听器可能对显示您的进度和尝试使用它们很有用
我认为这将使你能够设置一个progressListener
更新2:
TransferProgress是一个对象,它包含大量关于下载进度的信息。它具有已传输字节数、已传输总字节数和传输百分比。请详细查看这些方法
我正在从amazon s3服务器下载文件,它不需要任何URL,我只提供了访问密钥和要下载的文件路径。但是您是否使用URLConnection类?最好发布你的代码。我需要添加一个进度条,下载前需要文件大小。。我使用了progress listener,在这种情况下没有帮助。我认为根据他们的库,你不需要获得实际大小来建立进度,你只需要获得进度并在android视图上显示它。您说过您已经使用了progress listener和getProgress,那么输出是什么?如果它崩溃了,或者输出为空,那么您可能做错了。getProgress()返回以下内容:“com.amazonaws.services.s3.transfer.internal。TransferProgressImpl@40d661b0“我不知道如何利用这个来取得进展。。它返回这个字符串,并在每次进程中更改最后一个数字(不是按序列顺序)。
getProgress() //This will return TransferProgress object. See the links above
addProgressListener