Node.js NodeJS将二进制数据写入文件而不覆盖

Node.js NodeJS将二进制数据写入文件而不覆盖,node.js,Node.js,我目前正在尝试使用NodeJS编写一个二进制文件 我现在有一个问题,我不知道如何在两个字节之间插入数据而不覆盖下面的字节 例子 鉴于: 044255434804 我知道要在43和48之间插入55 预期结果:04425543554804 实际结果:044255435504 代码 我正在使用以下代码写入我的文件: fs.write(fd, 0x55, 4, (err) => { if (err) throw err; fs.close(fd); }); 我找不到任何解决办法,

我目前正在尝试使用NodeJS编写一个二进制文件

我现在有一个问题,我不知道如何在两个字节之间插入数据而不覆盖下面的字节

例子 鉴于:
044255434804

我知道要在
43
48
之间插入
55

预期结果:
04425543554804

实际结果:
044255435504

代码 我正在使用以下代码写入我的文件:

fs.write(fd, 0x55, 4, (err) => {
    if (err) throw err;
    fs.close(fd);
});

我找不到任何解决办法,所以我自己写的

function insert_data(fd, data, position, cb) {
    // ensure data i Buffer
    if (!Buffer.isBuffer(data)) {
        data = Buffer.from(data);
    }
    // get file size
    fs.fstat(fd, (err, stat) => {
        if (err) {
            return cb(err);
        }
        // calculate size for following bytes in file and allocate
        const buffer_size = stat.size > position ? stat.size - position : 0;
        const buffer = Buffer.alloc(buffer_size);
        // read bytes to by written after inserted data
        fs.read(fd, buffer, 0, buffer_size, position, (err, bytesRead, buffer) => {
            if (err) {
                return cb(err);
            }
            // concatenate new buffer containing data to be inserted and remaining bytes 
            const new_buffer = Buffer.concat([
                data,
                buffer
            ], data.length + buffer_size);
            // write new buffer starting from given position
            fs.write(fd, new_buffer, 0, new_buffer.length, position, (err) => {
                if (err) {
                    return cb(err);
                }
                fs.close(fd, cb);
            });
        });
    });
}

fs.open("test.bin", "r+", (err, fd) => {
    insert_data(fd, [0x55], 4, console.dir);
});
非常感谢:)也在考虑这种方法,但不想让它变得比需要的更复杂。