下面的一段代码用于阅读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();
从此输入流中读取最多 b.length 个字节的数据到字节数组中。此方法会阻塞,直到某些输入可用。
没有指定它重新bytes
填充数组的位置,但流填充array
直到file
成功read.
。
但是它在内部是如何维持这个魔法的呢?
我看到源代码或阅读方法
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 的文件,没有任何问题,分配了那个1000
字节array
。