如果
之间存在Groovy的差异IOUtils.copyLarge(content, output)
和
output << content
其中output是OutputStream对象,而content是HttpInputStream。
另外,希望我能正确地从连接中获取信息
def connection = (HttpURLConnection)(new URL(myURL).openConnection())
def content = connection.getContent()
提前感谢您的提示!
答案 0 :(得分:2)
假设您指的是来自Apache的commons-io库的IOUtils
,那么查看各个来源会发现Apache的IOUtils.copyLarge
和Groovy的OutputStream.leftShift
之间的关键区别(又名{{1} }),即Groovy的调用<<
:
在这种情况下,当没有从Thread.yield();
读取任何东西但它尚未到达它的结尾时,线程将暂停,允许其他线程继续,而IOUtils将简单地阻塞其线程,直到它完成处理InputStream
。这意味着Groovy的InputStream
运算符的行为可能与<<
不同,具体取决于您当时运行的其他线程及其相对优先级。
IOUtils.copyLarge
实际上返回HttpURLConnection.getContent()
的类型。这可能是Object
,但可能不是这样,你应该用以下方式验证该对象的类型:
HttpInputStream