我试图决定哪种方式更适合一次读取文件,字节。这两种方式中的一种比另一种更好,如果是这样,为什么呢?
1)
byte[] buffer = new byte[FILE_RETRIEVAL_BUFFER_SIZE];
int bytesRead = fileContent.read(buffer);
while (bytesRead != 1) {
fileOnDisk.write(buffer, 0, bytesRead);
bytesRead = fileContent.read(buffer);
}
2)
byte[] buffer = new byte[FILE_RETRIEVAL_BUFFER_SIZE];
while (true) {
int bytesRead = fileContent.read(buffer);
if (-1 == bytesRead)
{break;}
fileOnDisk.write(buffer, 0, bytesRead);
}
另一个常见的习语就是这个。它既没有冗余也没有中断声明。
int bytesRead;
while ( -1 != (bytesRead = fileContent.read(buffer)) {
...
}
第一个,(只需修复它并将你的while(bytesRead != 1)
改为while(bytesRead != -1)
)。它表明何时完成while循环更清楚。