2017-03-31 80 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