如何使用nodejs将对象保存在文件中

How to save an object in a file using nodejs

我的代码是这样的:

fs.writeFile("file.bin", this, 'binary', function(err){
  if(err) console.log(err);
  else console.log("file saved");
});

这是一个带有一堆属性的函数。 如果我这样做 console.log(this),它会显示对象,但是当我保存它时,文件只有这个:

[object Object]

由于没有得到我想要的答案,我想澄清一下我想要的。 我希望将我的对象存储为对象而不是 json 文件或 txt 文件。例如,如果我有一个 mp3 流,我希望将该流存储为 mp3 文件而不是 json 文件。有人知道怎么做吗?

您不能将其作为对象保存到文件中,但可以将其保存为对象的文本表示形式。您需要使用 JSON.stringify 将对象转换为字符串。像这样:

var myObj = {a:123,b:456};
JSON.stringify(myObj);

或者您的情况:

JSON.stringify(this);

然后当你需要访问它的时候,你可以用JSON.parse()

把它变回一个对象

参考资料

JSON.stringify

JSON.parse

来自文件系统的节点documentation,第二个参数需要是字符串、缓冲区或UintArray。 要将对象保存到文件,请使用 JSON.stringify(obj) 将对象转换为字符串并调用 fs.writeFile() API.

这是相同的代码片段:

fs.writeFile("file.bin", JSON.stringify(obj), 'binary', (err)=>{
   if(err) console.log(err)
   else console.log('File saved')
})

另一种方法是使用缓冲区代替字符串。

var buffer = Buffer.from(JSON.stringify(obj))
fs.writeFile("file.bin", buffer, 'binary', (err)=>{
   if(err) console.log(err)
   else console.log('File saved')
})

当然可以将对象保存到文件中,你认为图片是什么?

考虑如下:

  const fd = fs.openSync('myFile.bin', 'w')
  fs.writeSync(fd, Buffer.from(myObject, 'base64'))