Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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优化下载速度_Java_Performance_Download_Fileinputstream - Fatal编程技术网

使用Java优化下载速度

使用Java优化下载速度,java,performance,download,fileinputstream,Java,Performance,Download,Fileinputstream,我在java中有一种方法可以从web下载文件,但是通过java代码下载比使用任何浏览器下载都要慢 我的代码如下: public void downloadFile(String downloadURL) { System.out.println("Starting file download ....."); BufferedInputStream in = null; FileOutputStream fout

我在java中有一种方法可以从web下载文件,但是通过java代码下载比使用任何浏览器下载都要慢

我的代码如下:

 public void downloadFile(String downloadURL) {


            System.out.println("Starting file download .....");


            BufferedInputStream in = null;
            FileOutputStream fout = null;
            try {
                URL u = new URL(downloadURL);
                HttpURLConnection uc = (HttpURLConnection) u.openConnection();
                String fileName = uc.getHeaderField("Content-Disposition");
                fileName = YouTubeDownloader.parseResponse(fileName, "filename=\"", "\"");
                System.out.println(fileName);

                if (uc.getHeaderField("Content-Length") == null) {
                    System.out.println("File Length zero!!!!");

                }




                float fileSize = Float.parseFloat(uc.getHeaderField("Content-Length"));

                in = new BufferedInputStream(uc.getInputStream());

                System.out.println("File size : " + fileSize);


                fout = new FileOutputStream("c:\\Dinesh\\" + fileName);

                byte data[] = new byte[1024];
                int count = 0;
                int downloaded = 0;
                while ((count = in.read(data, 0, 1024)) != -1) {

                    downloaded += count;
                    int downloadPercentage = (int) ((downloaded / fileSize) * 100);
                    System.out.println(downloadPercentage);
                    fout.write(data, 0, count);
                }

                System.out.println("File download completed.....");

            } catch (Exception e) {
                System.out.println(e);
            }
    }
下载速度是否因为缓冲区较小而太慢

我是否可以增加缓冲区大小,或者如何优化缓冲区大小以降低下载速度

我需要修改哪些内容


提前感谢。

如果您不需要监控进度,请尝试以下操作:

Path saveFile = Paths.get("C:\\Dinesh", fileName);
Files.copy(uc.getInputStream(), saveFile);

除非写入速度较慢的设备,否则性能应受到网络速度/服务器传输速率的限制。缓冲输出流可能会有所帮助,将读取大小增加到8192字节也会有所帮助。