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

时间:2017-03-31 20:51:45

标签: node.js stream filestream fs

我的代码是:

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文件。有人知道怎么做吗?

3 个答案:

答案 0 :(得分:3)

对于FileSystem的Node 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')
})

答案 1 :(得分:0)

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

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

或在你的情况下:

JSON.stringify(this);

然后,当您需要访问它时,可以将其变回JSON.parse()

的对象

<强>参考

JSON.stringify

JSON.parse

答案 2 :(得分:0)

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

请考虑以下内容:

x -> x.toString()