1

如果 Groovy 之间存在差异

IOUtils.copyLarge(content, output)

output << content

其中 output 是一个 OutputStream 对象,而 content 是一个 HttpInputStream。

另外,希望我做对了从连接中取回信息

def connection = (HttpURLConnection)(new URL(myURL).openConnection())
def content = connection.getContent()

提前感谢您的提示!

4

1 回答 1

2

假设您从 Apache 的 commons-io 库中引用,查看各自的来源会发现 Apache和 Groovy (又名)IOUtils之间的关键区别,即 Groovy 的调用:IOUtils.copyLargeOutputStream.leftShift<<Thread.yield();

https://github.com/groovy/groovy-core/blob/master/src/main/org/codehaus/groovy/runtime/IOGroovyMethods.java#L207

InputStream在这种情况下,当没有从InputStream. 这意味着 Groovy<<运算符的行为可能会有所不同,IOUtils.copyLarge具体取决于您当时正在操作的其他线程及其相对优先级。

HttpURLConnection.getContent()实际上返回Object. 这可能是HttpInputStream,但可能不是,因此您应该使用以下方法验证该对象的类型:

if (content instanceof HttpInputStream) {
    output << content
} else {
    // Handle error condition
}
于 2013-03-14T18:06:45.187 回答