在 Javascript 中,当通过 "input file" 按钮打开文件时,是否将整个文件读入内存
In Javascript, when opening a file via an "input file" button, is the entire file read into memory
在 javascript 中,通过按钮 returns a Blob object(例如 blob1)打开文件时。
然后我可以通过 blob1ArrayBuffer = blob1.arrayBuffer();
获取 blob 的实际数据
创建 Blob 对象(例如 blob1)时,是否将所有字节加载到内存中?
或者它只是 returns 地址,以便稍后可以通过 blob1.arrayBuffer()
读取实际字节?
不是,所有的文件都没有读入内存(你可以尝试打开一个几TB的文件,应该还是可以的)。
但是请注意,OS 仍需要读取该文件的某些内容以生成文件的元数据。在某些情况下,这可能需要一段时间(例如,在选择许多文件的文件夹时,或者从网络磁盘等选择文件时。)
即使在执行 blob1.arraybuffer()
时,完整的文件也不一定会放入内存中,因为 the specs 要求 Blob 的所有使用者都使用 ReadableStream 从中获取数据。但显然在这种情况下,完整数据将被复制到很可能位于内存中的结果 ArrayBuffer 中。
在 javascript 中,通过按钮 returns a Blob object(例如 blob1)打开文件时。
然后我可以通过 blob1ArrayBuffer = blob1.arrayBuffer();
创建 Blob 对象(例如 blob1)时,是否将所有字节加载到内存中?
或者它只是 returns 地址,以便稍后可以通过 blob1.arrayBuffer()
读取实际字节?
不是,所有的文件都没有读入内存(你可以尝试打开一个几TB的文件,应该还是可以的)。
但是请注意,OS 仍需要读取该文件的某些内容以生成文件的元数据。在某些情况下,这可能需要一段时间(例如,在选择许多文件的文件夹时,或者从网络磁盘等选择文件时。)
即使在执行 blob1.arraybuffer()
时,完整的文件也不一定会放入内存中,因为 the specs 要求 Blob 的所有使用者都使用 ReadableStream 从中获取数据。但显然在这种情况下,完整数据将被复制到很可能位于内存中的结果 ArrayBuffer 中。