Ren*_*ani 1 java size download
我想确定一个网页的大小,所以,如果它大于一个数字(例如:5MB),我会下载或不下载.我可以提供这些信息吗?
您可以通过以下方式进行适当的近似:
HttpURLConnection content = (HttpURLConnection) new URL("www.example.com").openConnection();
System.out.println(content.getContentLength());
Run Code Online (Sandbox Code Playgroud)
但是,这只会告诉您要请求的特定资源的长度(例如,URL底部的HTML).您还需要浏览页面中的HTML,查看它引用的所有资源(来自其他站点的脚本,图像,视频等)并将它们全部加起来.
这将使你相当接近总大小,但即便如此,你也不会得到一个完美的计数,因为(a)并非所有的URL都会返回这些信息而你没有任何控制权,并且(b )取决于内容的加载方式(例如通过隐藏特定内容的AJAX调用),您将无法提前知道要下载的完整资源列表.
或者,如果URL没有返回结果,我认为Giacomo建议使用CounterInputStream.不错的主意.您可以将上述建议与CounterInputStream结合使用,以保持已发送总数的计数,并在达到指定的最大总传输大小时可能停止传输.这样你基本上有一个预测的大小(比如一个站点告诉你它将是3.3 MB),但是当你下载时你发现它实际上是6 MB并且还没有停止,并做出决定不再下载了.