【发布时间】:2011-08-29 14:37:15
【问题描述】:
我有一段代码可以读取InputStream 并将内容写入OutputStream:
BufferedInputStream in = new BufferedInputStream(...);
FileOutputStream outStream = new FileOutputStream outStream(...);
int read = in.read(buffer, 0, bufferSize);
while (read != -1) {
outStream.write(buffer, 0, read);
read = in.read(buffer, 0, bufferSize);
}
它可以工作,但我不喜欢它,因为变量read 是在循环外声明的,而read() 方法被写了两次。
修改后的版本:
for (int read = 0; read != -1; read = in.read(buffer, 0, bufferSize)) {
outStream.write(buffer, 0, read);
}
它看起来更好但不够好,因为第一次迭代在 read=0 时是无用的(并且可能有害)。
你有更好的解决方案吗?
【问题讨论】:
-
恕我直言,第一个版本比第二个版本更具可读性。
-
或者你可以使用 commons-io 并将整个内容替换为
IOUtils.copy(in, outStream);
标签: java loops for-loop while-loop