如何使用Node.js将对象保存到文件中

3

以下是我的代码:

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

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

[object Object]

您IP地址为146.190.162.183,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。

先看一下这个问题:https://dev59.com/lGEh5IYBdhLWcg3w0WVP - AIon
3个回答

7

从Node FileSystem文档中得知,第二个参数需要是一个字符串、缓冲区或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')
})

数据存储的结果是字符串还是对象?另外,哪个更快?字符串还是缓冲区? - Sacha Charbit

0

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

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

或者在你的情况下:
JSON.stringify(this);

然后当你需要访问它时,你可以使用JSON.parse()将其转换回对象。

参考资料

JSON.stringify

JSON.parse


我不想将它保存为文本文件,而是保存为对象。我希望它占用尽可能少的空间。 - Sacha Charbit
你不能将它保存为一个对象到文件中,但是你可以将它保存为一个对象的文本表示。然后当你需要访问它时,你可以使用JSON.parse()将其转换回对象。 - fredrover

0
当然可以将对象保存到文件中,你认为图片是什么呢?
考虑像这样的操作:
  const fd = fs.openSync('myFile.bin', 'w')
  fs.writeSync(fd, Buffer.from(myObject, 'base64'))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接