我有一个应用程序正在下载一个zip文件,然后将此文件复制到手机上的SD卡上的临时文件中,但速度非常慢。
InputStream in = new BufferedInputStream(url.openStream(), 1024);
File tempFile = File.createTempFile("arc", ".zip", targetDir); //target dir is a file
String tempFilePath = tempFile.getAbsolutePath();
OutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));
//copying file (in different void)
byte[] buffer = new byte[8192];
int len;
len = in.read(buffer);
enter code here
//it loops here for AGES
while (len >= 0) {
out.write(buffer, 0, len);
len = in.read(buffer);
}
in.close();
out.close();
我的文件大约是20MB,最初我的缓冲区大小为1024,并将其更改为8192,认为它可以加快速度,但它似乎没有区别?我总是说完,我没有错,只需要很长时间!
我已经搜索过尝试找到解决方案,但我没有提出任何建议,所以我可能会以完全错误的方式进行此操作?
谁能看到我做错了什么?
贝克斯
答案 0 :(得分:0)
不要增加缓冲区大小。这可能会导致您的应用程序MemoryOutOfBoundsException。
您的下载速度很慢。弱互联网连接,弱文件传输和接收模式也是负责任的。它还取决于设备的容量。检查您是否使用以下代码创建输入流
URL u = new URL("enter url url here");
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
InputStream in = c.getInputStream();
由于 迪帕克