我已经实现了一个 REST 服务,用于使用 IOUtils.copy() 下载一个中等大小 (250 Mb) 的 zip 文件,类似于将文件写入 servletoutputstream 的最有效方法。使用 HttpURLConnection 从另一个应用程序调用 REST 服务。我在接收端使用 IOUtils.copy() 将文件保存到磁盘。
下载一个文件需要 30 多分钟。这太慢了。
想法?更好的实现?
我已经实现了一个 REST 服务,用于使用 IOUtils.copy() 下载一个中等大小 (250 Mb) 的 zip 文件,类似于将文件写入 servletoutputstream 的最有效方法。使用 HttpURLConnection 从另一个应用程序调用 REST 服务。我在接收端使用 IOUtils.copy() 将文件保存到磁盘。
下载一个文件需要 30 多分钟。这太慢了。
想法?更好的实现?
我发现了这个问题。
我在同一台机器上运行客户端和服务器进行测试。一旦我将一个转移到另一台机器上,转移就花了一分钟多一点。
您可以阅读源代码并亲自查看默认缓冲区大小为 4096。
我个人在特定情况下使用 8192 作为缓冲区大小。
考虑使用缓冲区大小。
您可以自己轻松实现此副本,或在此处查看源文件作为参考。
此外,如果可能,请考虑执行多线程下载,因为您的服务器支持多个连接(我假设)。