2

読み取りに使用する以下のコードFiles

 int bytesRead;
 byte[] bytes = new byte[1000];  //buffer
 FileInputStream fis = new FileInputStream(uploadedFile);

    while ((bytesRead = fis.read(bytes)) != -1) {
          fis.read(bytes, 0, bytesRead);
    }

fis.close();

read() メソッドの api による

この入力ストリームから最大 b.length バイトのデータをバイト配列に読み取ります。このメソッドは、何らかの入力が利用可能になるまでブロックします。

配列を補充するように指定された場所はありませんが、正常に完了する までbytesストリームが充填されます。arrayfileread.

しかし、この魔法を実現するために内部でどのように維持されているのでしょうか??

ソースコードを見たり、メソッドを読んだりしました

public int More ...read(byte b[]) throws IOException {
214        return readBytes(b, 0, b.length);
215    }

readBytesソースコードは

200    private native int More ...readBytes
                (byte b[], int off, int len) throws IOException;

どのようにbytes..

問題なく 500MB のファイルをアップロードしまし1000array

4

2 に答える 2