2

我正在尝试决定哪种方式更适合读取文件,一次读取字节。这两种方法中的一种是否比另一种更好,如果是,为什么?

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);
 }
4

2 回答 2

3

另一个常见的成语是this。它既没有冗余也没有中断语句。

int bytesRead;
while ( -1 != (bytesRead = fileContent.read(buffer)) {
       ...
}
于 2013-08-16T11:25:37.983 回答
0

第一个,(只需修复它并将您的更改while(bytesRead != 1)while(bytesRead != -1))。它更清楚地说明了何时完成 while 循环。

于 2013-08-16T11:25:40.513 回答