如何保存ArrayBuffer?

6 浏览
0 Comments

如何保存ArrayBuffer?

如何将ArrayBuffer保存到json文件中?我使用electron-config来实现这个功能,但是在config.json中我发现"{}"。我尝试将ArrayBuffer转换为字符串(代码参考:链接),但是我无法将字符串转换为ArrayBuffer。

put: function(key, value) {
    //value = { prop1: , prop2:  }
    if (key === undefined || value === undefined || key === null || value === null)
        return;
    var prop1Str,prop2Str;
    prop1Str = this.ab2str(value.prop1);
    prop2Str = this.ab2str(value.prop2);
    var chValue = {prop1:prop1Str, prop2:prop2Str};
    config.set(key,chValue);
    console.log(value.prop1 === this.str2ab(config.get(key).prop1)); //===> FALSE
},
ab2str: function(buf) {
    return String.fromCharCode.apply(null, new Uint8Array(buf));
},
str2ab: function(str) {
    var buf = new ArrayBuffer(str.length);
    var bufView = new Uint16Array(buf);
    for (var i=0, strLen=str.length; i < strLen; i++) {
        bufView[i] = str.charCodeAt(i);
    }
    return buf;
}

0
0 Comments

如何保存ArrayBuffer?

在Node 14.xx+版本中,可以通过以下代码来保存ArrayBuffer:

首先,需要创建一个输出目录:

let rootDir = process.cwd()
console.log("当前目录:" + rootDir)
let outDir = './out/';
console.log("输出目录:" + outDir)
if (!fs.existsSync(outDir)){
    fs.mkdirSync(outDir);
}else{
    console.log("目录已存在");
}

然后,定义一个保存文件的函数:

const saveArrayAsFile = (arrayBuffer, filePath) => {
    fs.writeFile(filePath, Buffer.from(arrayBuffer), 'binary', (err) => {
        if (err) {
            console.log("写入文件时发生错误")
        } else {
            console.log("已写入文件:" + filePath)
        }
    });
};

最后,调用保存文件的函数来保存ArrayBuffer:

saveArrayAsFile(arrayBuffer, outDir + "文件名" + new Date().getTime() + ".png")

以上就是保存ArrayBuffer的方法。

0
0 Comments

如何保存ArrayBuffer?

问题的原因:在将ArrayBuffer保存到磁盘上时,需要使用正常的node API来将其写入磁盘。这是因为ArrayBuffer是一种用于处理二进制数据的数据类型,而保存到磁盘上的文件需要通过特定的API才能实现。

解决方法:可以使用以下代码将ArrayBuffer保存到磁盘上:

require('fs').writeFileSync('/path/to/saved/file', Buffer.from(myArrayBuffer));

以上代码中,使用了node的fs模块的writeFileSync方法。该方法接受两个参数:文件路径和要保存的数据。在这里,我们将ArrayBuffer转换为Buffer类型的数据,并将其作为writeFileSync方法的第二个参数传入。

通过以上方法,我们可以将ArrayBuffer保存到指定的文件路径中。

0
0 Comments

要在JSON中保存ArrayBuffer,需要将其表示为字符串或数字数组中的一种类型。然后在读取JSON时,需要将其转换回ArrayBuffer,恢复之前的转换过程。

如果想在本地数据库或文件中保存ArrayBuffer,可以尝试以下方法。首先将ArrayBuffer转换为字符串,然后再将字符串保存到本地数据库或文件中。当需要使用时,从本地数据库或文件中读取字符串,然后将其转换回ArrayBuffer。

以下是将ArrayBuffer转换为字符串的方法:

function arrayBufferToString(arrayBuffer) {

var uint8Array = new Uint8Array(arrayBuffer);

var string = String.fromCharCode.apply(null, uint8Array);

return string;

}

以下是将字符串转换回ArrayBuffer的方法:

function stringToArrayBuffer(string) {

var uint8Array = new Uint8Array(string.length);

for (var i = 0; i < string.length; i++) {

uint8Array[i] = string.charCodeAt(i);

}

return uint8Array.buffer;

}

通过使用这两个方法,可以将ArrayBuffer保存到本地数据库或文件中,并在需要时恢复为ArrayBuffer。

0