Loops 如果inputStream缺少do while语句,如何使用Groovy迭代inputStream中的所有字节?
既然Groovy没有do while语句,我如何迭代输入流中的所有字节 根据a: 不,不要。。。while()'语法 由于模棱两可,我们尚未添加对do.的支持。。当你到Groovy的时候 在Groovy中执行以下Java代码的最佳方法是什么Loops 如果inputStream缺少do while语句,如何使用Groovy迭代inputStream中的所有字节?,loops,groovy,do-while,Loops,Groovy,Do While,既然Groovy没有do while语句,我如何迭代输入流中的所有字节 根据a: 不,不要。。。while()'语法 由于模棱两可,我们尚未添加对do.的支持。。当你到Groovy的时候 在Groovy中执行以下Java代码的最佳方法是什么 def numRead = inputStream.read(fileBytes, 0, fileBytes.length); do{ } while(numRead > 0); (我知道我可以使用布尔值来实现这一点,我只想知道是否有一种“Groo
def numRead = inputStream.read(fileBytes, 0, fileBytes.length);
do{
} while(numRead > 0);
(我知道我可以使用布尔值来实现这一点,我只想知道是否有一种“Groovy”的实现方式)Groovy(1.8版+)的实现方式如下:
inputStream.eachByte(BUFFER_SIZE) { buffer, numRead ->
...
}
使用以下命令:
for(;;){ // infinite for
...
if( numRead == 0 ){ //condition to break, oppossite to while
break
}
}
我知道这是一个老生常谈的问题。但这是谷歌搜索“groovy do while”时第一个弹出的内容 我认为Groovy中的同义词可以是:
while ({
...
numRead > 0
}()) continue
请考虑上面的例子。除了一些“多余”的括号外,它的语法可读性相当好
下面是它的工作原理:
continue
after while条件结束圆括号只是因为必须有“某物”,任何可编译语句。例如,它可能是0
,但continue
似乎更适合continue
分号也可以。然后是这样的:
while ({
...
numRead > 0
}());
谢谢,这正是我想要的。@ataylor我如何将此方法应用到另一个只有循环内部才知道
缓冲区大小的场景中?简单地说,如果不进入循环,我不知道缓冲区大小的值。Tim yates给出了更好的答案: