2012-03-27 12 views
38

मैं test.txt को नोडजेज़ के साथ लोड करना चाहता हूं।nodejs लोड फ़ाइल

var fs = require('fs'); 
fs.readFile('./test.txt', function (err, data) { 
    if (err) { 
    throw err; 
    } 
    console.log(data); 
}); 

सर्वर का पथ C:\server\test\server.js है। test.txt एक ही निर्देशिका में स्थित है, लेकिन मैं इस त्रुटि मिलती है: Error: ENOENT, no such file or directory 'C:\Users\User\test.txt'

उत्तर

57

पथ कर वर्तमान कार्यशील करने के लिए अपेक्षाकृत हल कर रहे हैं निर्देशिका। अपने नोड स्क्रिप्ट के स्थान के पथ को हल करने के लिए __dirname के साथ अपना पथ उपसर्ग करें।

var fs = require('fs'); 
fs.readFile(__dirname + '/test.txt', function (err, data) { 
    if (err) { 
    throw err; 
    } 
    console.log(data.toString()); 
}); 
+0

धन्यवाद, अब यह –

+0

काम करता है मुझे 'संदर्भ त्रुटि प्राप्त हो रही है: __dirname परिभाषित नहीं किया गया है'। क्या ऐसा इसलिए है क्योंकि मैं मैन्युअल रूप से 'var __dirname ='/the/path/''को परिभाषित कर सकता हूं? – myfirsttime1

+1

@ myfirsttime1 '__dirname' केवल नोड स्क्रिप्ट में काम करता है, न कि REPL में। –

0
तो

अगर यह एक ही निर्देशिका में है सिर्फ नोड में इस

fs.readFile(__dirname+'/foo.txt',function(e,d){console.log(d)}) 
+2

मैंने डाउनवॉट किया, क्योंकि यह स्पष्ट रूप से काम नहीं करता है। –

+0

रोब इसे पूरी तरह से करता है .. बस इसे नोड टर्मिनल में किया गया – samccone

+2

'x.js' को'/tmp/x/x.js' पर बनाएं। इसमें ओपी कोड डालें। '/ Tmp/x/test.txt' भी बनाएं। अब, अपने कामकाजी डीआईआर को '/ tmp' (उदा। 'सीडी/टीएमपी') पर सेट करें और' नोड x/x.js' या 'नोड/tmp/x/x.js' -> त्रुटि: ENOENT, ऐसी कोई फ़ाइल या निर्देशिका 'test.txt'' –

6

आप __dirname का उपयोग करना चाहिए निर्देशिका का नाम फ़ाइल के बजाय वर्तमान कार्यशील निर्देशिका के स्थित है पाने के लिए:

fs.readFile(__dirname + "/test.txt", ...); 
5
नोड 0.12 के साथ

, यह इस तुल्यकालिक अब क्या किया जा सकता है:

var fs = require('fs'); 
    var path = require('path'); 

    // Buffer mydata 
    var BUFFER = bufferFile('../test.txt'); 

    function bufferFile(relPath) { 
    return fs.readFileSync(path.join(__dirname, relPath)); // zzzz.... 
    } 

fs फ़ाइल सिस्टम है। readFileSync() यदि आप पूछते हैं तो एक बफर, या स्ट्रिंग देता है।

fs सही ढंग से मानते हैं कि सापेक्ष पथ सुरक्षा समस्या हैं। path एक काम-आसपास है।

एक स्ट्रिंग के रूप में लोड करने के लिए, एन्कोडिंग निर्दिष्ट:

return fs.readFileSync(path,{ encoding: 'utf8' }); 
0

यदि यह एक ही निर्देशिका यह काम करना चाहिए में है। मैंने name.txt फ़ाइल के साथ एक ही कोड के साथ परीक्षण किया है और यह ठीक काम कर रहा है:

var fs = require('fs'); 
fs.readFile('./test.txt', function (err, data) { 
    if (err) { 
    throw err; 
    } 
    console.log(data.toString()); 
});