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

Sac*_*bit 2 stream filestream fs node.js

我的代码是这样的:

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

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

[object Object]
Run Code Online (Sandbox Code Playgroud)

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

小智 5

从FileSystem的 Node文档中,第二个参数需要是字符串、缓冲区或 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')
})
Run Code Online (Sandbox Code Playgroud)

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

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