多年來,我一直從InputStreams在這樣的循環讀取:更優雅的輸入流讀取循環?
final byte[] buffer = new byte[65536];
InputStream is = ...;
int r;
while ((r = is.read(buffer)) > 0) {
...
}
但我不知道是否有一種方法來避免在循環中分配(不引入第二個條件) - 例如此代碼有兩個讀語句和兩個條件,我認爲更不優雅:
r = is.read(buffer);
if (r > 0) {
do {
...
r = is.read(buffer);
} while (r > 0);
}
任何想法更優雅(緊湊,沒有有條件分配)構建?
不應該比較(r> = 0)而不是(r> 0)嗎?流結束由-1表示。 – Leonel 2011-04-07 18:42:03