嗯......我的应用程序在互联网上有很多图像。它们存储在文件夹和子文件夹中,如类别。
首次启动我的应用时,我想允许用户将所有这些内容下载到他/她的内部SD卡。
以下是我要做的事情:
URL url = new URL ("www.mysite.com/folder1/subfolder1/anImage.png");
InputStream input = url.openStream();
try {
OutputStream output = new FileOutputStream ("/sdcard/myImage.png");
try {
byte[] buffer = new byte[aReasonableSize];
int bytesRead = 0;
while ((bytesRead = input.read(buffer, 0, buffer.length)) >= 0) {
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
}
} finally {
input.close();
}
好的......上面的代码允许我从一个链接保存一个图像。
如何全部检索?
此外,是否可以通知用户将传输多少数据(MB)?
感谢任何帮助!
谢谢!
答案 0 :(得分:0)
Here是关于how to download images的一个很好的例子和解释。
您可以通过以下方法计算远程文件的大小。将URL数组传递给此方法,它将返回以字节为单位的大小。
public static int getSize(String[] urls){
int sizeInBytes = 0;
for (String string : urls) {
sizeInBytes += ((int) (new File(string)).length());
}
return sizeInBytes;
}
您还可以在SD卡上下载后计算图像大小将目录文件(保存所有图像的位置)传递给getSize(...)
方法,它将返回目录大小以字节为单位。
String basePath = Environment.getExternalStorageDirectory().toString();
File file = new File(basePath +"file/myImageDirectory/");
ClassName.getSize(file);
计算目录大小的方法。
public static int getSize(File directory) {
return getSize(directory, 0);
}
private static int getSize(File directory,int sizeInBytes) {
if (directory == null)
return sizeInBytes;
if (!directory.exists())
return sizeInBytes;
if (directory.isDirectory()) {
String[] list = directory.list();
// Some JVMs return null for File.list() when the
// directory is empty.
if (list != null) {
for (int i = 0; i < list.length; i++) {
File entry = new File(directory, list[i]);
if (entry.isDirectory()) {
sizeInBytes = getSize(entry,sizeInBytes);
} else {
sizeInBytes +=entry.length();
}
}
}
}
return sizeInBytes;
}
一个MB=1024*1024
,您可以通过将SizeInMB
除以MB的大小来获得sizeInBytes
; sizeInMB=sizeInBytes/MB;