【问题标题】:How to save an object in a file using nodejs如何使用nodejs将对象保存在文件中
【发布时间】:2017-08-26 05:52:46
【问题描述】:

我的代码是这样的:

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

【问题讨论】:

标签: node.js stream filestream fs


【解决方案1】:

从 FileSystem 的节点documentation 开始,第二个参数需要是字符串、缓冲区或 UintArray。 要将对象持久化到文件中,请使用JSON.stringify(obj) 将对象转换为字符串并调用fs.writeFile() API。

这是相同的代码sn-p:

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')
})

【讨论】:

  • 数据是作为字符串存储的还是作为对象存储的?另外,最快的是什么?字符串还是缓冲区?
【解决方案2】:

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

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

或者在你的情况下:

JSON.stringify(this);

然后当你需要访问它的时候,你可以用JSON.parse()把它转回一个对象

参考文献

JSON.stringify

JSON.parse

【讨论】:

  • 我不想将其保存为文本文件,而是保存为对象。我希望它使用尽可能少的空间。
  • 您不能将其作为对象保存到文件中,但可以将其保存为对象的文本表示。然后当你需要访问它的时候,你可以用JSON.parse()把它变回一个对象。
【解决方案3】:

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

考虑类似:

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

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 2014-08-21
    • 2011-05-17
    • 1970-01-01
    • 2015-06-05
    • 2018-06-20
    • 2011-01-26
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多