0

ここに示されているのは、ソケット接続の inputStream を読み取る方法に関する 2 つのコード サンプルです。どちらが最適で、その理由は?

コードサンプル 1

   while(totalBytesRead < fileSizeFromClient){
            int bytesRemaining = fileSizeFromClient - totalBytesRead;
            int bytesRead = dataInputStream.read(buffer, 0, (int)Math.min(buffer.length, bytesRemaining));

            if(bytesRead == -1){
               break;
             }else{

                dataOutputSream.write(buffer, 0, bytesRead);
                totalBytesRead += bytesRead;

            }
   }

コードサンプル 2

    while(totalBytesRead < fileSizeFromClient){
          int bytesRemaining = fileSizeFromClient - totalBytesRead;
          int bytesRead = dataInputStream.read(buffer, totalBytesRead, bytesRemaining);

          if(bytesRead == -1){
             break;
             }else{

                dataOutputStream.write(buffer, totalBytesRead, bytesRead);
                totalBytesRead += bytesRead;
            }
   }
4

1 に答える 1

0

それらは同等ではないため、比較することはできません。2 番目の例は、'totalBytesRead' がバッファーをオーバーフローするため、特定のファイル サイズとバッファー サイズを超えると機能しません。また、大量のスペースを無駄にします。バッファ内のファイルの内容が必要でない限り、それは無意味な代替手段です

于 2013-09-26T23:40:49.323 に答える