Android将大输入流复制到文件非常慢

时间:2011-06-01 13:06:41

标签: 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 = 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,认为它可以加快速度,但它似乎没有区别?我总是说完,我没有错,只需要很长时间!

我已经搜索过尝试找到解决方案,但我没有提出任何建议,所以我可能会以完全错误的方式进行此操作?

谁能看到我做错了什么?

贝克斯

1 个答案:

答案 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();

由于 迪帕克