2017-03-31 79 views
0

我的代码保存在一个文件中的对象是这样的:如何使用的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文件。有人知道如何做到这一点?

+0

退房这个问题首先http://stackoverflow.com/questions/21976567/write-objects-into-file-with-node-js – AIon

回答

2

从节点documentation对于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') 
}) 
+0

数据是以字符串还是以对象形式存储的?另外,最快的是什么?字符串或缓冲区? –

0

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

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

或在您的情况:

JSON.stringify(this); 

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

参考把它回到对象

JSON.stringify

JSON.parse

+0

我不想把它保存为文本文件,但作为一个对象。我希望它尽可能少用空间。 –

+0

您不能将其作为对象保存到文件,但可以将其另存为文本表示形式的对象。然后,当你需要访问它时,你可以用'JSON.parse()'把它变回一个对象。 – fredrover