Trong nhiều năm tôi đã được đọc từ InputStreams trong một vòng lặp như thế này:Dòng đọc đầu vào thanh lịch hơn?
final byte[] buffer = new byte[65536];
InputStream is = ...;
int r;
while ((r = is.read(buffer)) > 0) {
...
}
Nhưng tôi tự hỏi, nếu có một cách để tránh điều đó nhiệm vụ trong vòng lặp (không giới thiệu điều kiện thứ hai) - ví dụ mã này tôi xem xét thậm chí còn kém thanh lịch hơn vì có hai câu lệnh đọc và hai điều kiện:
r = is.read(buffer);
if (r > 0) {
do {
...
r = is.read(buffer);
} while (r > 0);
}
Bất kỳ ý tưởng nào cho cấu trúc trang nhã hơn (nhỏ gọn, không có điều kiện) xây dựng?
Không nên so sánh (r> = 0) thay vì (r> 0)? Kết thúc luồng được biểu thị bằng -1. – Leonel