【问题标题】:Read a file into a specific block of memory in Node.js将文件读入 Node.js 中的特定内存块
【发布时间】:2021-02-23 03:31:08
【问题描述】:

您可以让 Node.js 以某种方式将文件作为二进制文件读取到特定的内存槽中吗?

let buffer = new Uint8Array
let location = 0
let path = 'foo.binary'
fs.readIntoMemoryLocation(path, buffer, location)

这样的事情可能吗?

我想知道,因为我有一堆东西要在一个数组缓冲区中处理,并且想向其中添加一个文件,而不是文件是它自己的缓冲区。无需将文件从一个地方复制到另一个地方。如果不在 Node.js 中,那么浏览器不知何故?

【问题讨论】:

    标签: javascript node.js memory fs


    【解决方案1】:

    您可以让 Node.js 以某种方式将文件作为二进制文件读取到特定的内存插槽中吗?

    是的,fileHandle.read()fs.read() 接口都允许您传入一个缓冲区和偏移量到您希望它读取数据的缓冲区中。

    fs.readFile() 接口不提供此功能,因此您必须自己打开文件并将数据读入缓冲区,然后关闭文件。如果你统计文件看看它有多大,你仍然可以通过一次读取操作将整个文件读入缓冲区。

    【讨论】:

    • 万岁,谢谢!!!有没有办法在浏览器中做到这一点? :D
    • @LancePollard 应该可以在浏览器中通过 .stream() 方法,这将允许您将流数据读取到您自己的 ArrayBufferView 中(因此允许写入您可以分配的单个 ArrayBuffer事先),除了还没有供应商实现 ReadableStreamBYOBReader ......所以第二个最接近的方法是使用 ReadableStreamDefaultReader 并为每个块分配一个小的 ArrayBuffer,并将这个块的数据复制到最终的大 ArrayBuffer 中,效率低很多...
    猜你喜欢
    • 2019-01-10
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2015-09-24
    • 2021-11-07
    • 2010-11-14
    相关资源
    最近更新 更多