Java Android将大型inputstream复制到文件的速度非常慢
我有一个应用程序正在下载一个zip文件,然后将这个文件复制到手机sd卡上的一个临时文件,但是速度非常慢Java Android将大型inputstream复制到文件的速度非常慢,java,android,inputstream,Java,Android,Inputstream,我有一个应用程序正在下载一个zip文件,然后将这个文件复制到手机sd卡上的一个临时文件,但是速度非常慢 InputStream in = new BufferedInputStream(url.openStream(), 1024); File tempFile = File.createTempFile("arc", ".zip", targetDir); //target dir is a file String tempFilePath = te
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,认为它可能会加快速度,但似乎没有什么区别?我总是完成,我没有错误,只是需要时间
我一直在努力寻找解决方案,但我没有想出任何办法,所以我可能完全走错了方向
有人能看出我做错了什么吗
Bex不增加缓冲区大小。这可能会导致您的应用程序内存边界异常 有各种各样的因素会使你的下载速度变慢。薄弱的互联网连接、薄弱的文件传输和接收模式也是原因之一。它还取决于设备的容量。检查您是否正在使用以下代码创建inputstream
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();
谢谢
Deepak不增加缓冲区大小。这可能会导致您的应用程序内存边界异常 有各种各样的因素会使你的下载速度变慢。薄弱的互联网连接、薄弱的文件传输和接收模式也是原因之一。它还取决于设备的容量。检查您是否正在使用以下代码创建inputstream
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();
谢谢
Deepak检查这不是您的internet连接。怎样如果你评论“写”行,它没有任何区别。。。阅读要花很多时间。。。所以这一定是连接。我看不出你的代码有什么问题,所以我认为它是I/O绑定的。可能服务器或SD卡速度很慢?您是否尝试过在不写入或写入虚拟数据的情况下读取数据,以查看哪个部分是瓶颈?啊,这样在读取流之前它不会下载实际文件?检查它不是您的internet连接。怎样如果你评论“写”行,它没有任何区别。。。阅读要花很多时间。。。所以这一定是连接。我看不出你的代码有什么问题,所以我认为它是I/O绑定的。可能服务器或SD卡速度很慢?您是否尝试过在不写入或写入虚拟数据的情况下读取数据,以查看哪个部分是瓶颈?啊,这样它在读取流之前不会下载实际文件?