Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android将大型inputstream复制到文件的速度非常慢_Java_Android_Inputstream - Fatal编程技术网

Java Android将大型inputstream复制到文件的速度非常慢

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

我有一个应用程序正在下载一个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,认为它可能会加快速度,但似乎没有什么区别?我总是完成,我没有错误,只是需要时间

我一直在努力寻找解决方案,但我没有想出任何办法,所以我可能完全走错了方向

有人能看出我做错了什么吗


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卡速度很慢?您是否尝试过在不写入或写入虚拟数据的情况下读取数据,以查看哪个部分是瓶颈?啊,这样它在读取流之前不会下载实际文件?