通常,当我处理InputStream, 停止读取的条件是当读取字节数小于或等于 0
例如,
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我查看文档时 InputStream
https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read(byte[])
只有我注意到
-1 如果由于已到达流末尾而没有更多数据。
我想知道,我应该将我的代码重构为
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) != -1) {
if (len > 0) {
out.write(buf, 0, len);
}
}
Run Code Online (Sandbox Code Playgroud)
是否会有任何边缘情况检查while ((len = in.read(buf)) > 0)会导致任何不需要的错误?
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |