如何通过java实现文件下载并计算进度

业务场景如下:
有一个java程序需要去网站上面下载一个大文件的数据包(400M),我需要在控制台打印出当前下载的进度,百分比或者时间之内的,不知道有没有办法实现。或者有现成的第三方下载的jar可以实现该功能没有。谢谢

阅读 9k
1 个回答

拿到HttpResponse后读取 content-length 头,

读取InputStream的时候根据已经读取到的byte数,算出百分比就行了。

糙版代码:

private static void readAndPrintProgress(InputStream is, int len)
            throws IOException {
        int sizeRead = 0;
        byte[] buffer = new byte[1024];

        int tmpSize = 0;
        do {
            sizeRead += tmpSize;
            System.out.println((sizeRead * 100 / len) );
            tmpSize = is.read(buffer);
        } while (tmpSize > 0);
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏