दिलचस्प पोस्ट
एंड्रॉइड INSTALL_FAILED_UID_CHANGED निर्बाध इंटरफेस – विधि चेनिंग <Marquee> टैग की जगह जावास्क्रिप्ट मार्की जावा में फ्लोट की तुलना करने के लिए == का उपयोग करने में क्या गलत है? जावा "बिट स्थानांतरण" ट्यूटोरियल? बाहरी निर्भरताओं के साथ मैं ब्राउजरर्मा का उपयोग कैसे करूं? वर्णों की सरणी में विभाजित स्ट्रिंग? jquery draggable: कैसे खींचें क्षेत्र को सीमित करने के लिए? विंडोज़ में स्थानीय होस्ट पर, PHP स्क्रिप्ट पर क्रॉन जॉब चलाएं मैं MS-SQL सर्वर में एक एलायेज कॉलम पर ग्रुप बाय कैसे कर सकता हूं? ऐसे फाइल को लोड नहीं कर सकता – rvm pkg install zlib का उपयोग करने के बाद भी zlib एंड्रॉइड में ऑफ़लाइन भाषण मान्यता (जेलीबीन) NSString को NSDate में परिवर्तित करना (और वापस दोबारा) स्विफ्ट 4 समाधान उपलब्ध है पायथन से सी ++ में स्टडीन से लाइनों को बहुत धीमा क्यों पढ़ना है? लिनक्स पीआईडी ​​रीसाइक्लिंग

नोड में एक फ़ाइल को कैसे जोड़ें?

मैं एक लॉग फ़ाइल में एक स्ट्रिंग जोड़ने की कोशिश कर रहा हूँ। हालांकि लिखेंफ़ाइल हर बार स्ट्रिंग लिखने से पहले सामग्री को मिटा देगा।

fs.writeFile('log.txt', 'Hello Node', function (err) { if (err) throw err; console.log('It\'s saved!'); }); // => message.txt erased, contains only 'Hello Node' 

कोई आसान तरीका यह कैसे आसान तरीका है?

डैनियल

Solutions Collecting From Web of "नोड में एक फ़ाइल को कैसे जोड़ें?"

असिंक्रोनस :

 var fs = require('fs'); fs.appendFile('message.txt', 'data to append', function (err) { if (err) throw err; console.log('Saved!'); }); 

सिंक्रोनस :

 var fs = require('fs'); fs.appendFileSync('message.txt', 'data to append'); 

आपके कोड का उपयोग करें, बनाएँरेस्टस्ट्रीम प्रत्येक लेखन के लिए एक फ़ाइल विवरणक बनाता है। log.end बेहतर है क्योंकि यह लिखने के बाद नोड को तत्काल बंद करने के लिए कहता है।

 var fs = require('fs'); var logStream = fs.createWriteStream('log.txt', {'flags': 'a'}); // use {'flags': 'a'} to append and {'flags': 'w'} to erase and write a new file logStream.write('Initial line...'); logStream.end('this is the end line'); 

आपको इसे खोलने की आवश्यकता है, फिर इसे लिखना

 var fs = require('fs'), str = 'string to append to file'; fs.open('filepath', 'a', 666, function( e, id ) { fs.write( id, 'string to append to file', null, 'utf8', function(){ fs.close(id, function(){ console.log('file closed'); }); }); }); 

यहां कुछ लिंक हैं जो मापदंडों को समझाने में मदद करेंगे

खुला
लिखना
बंद करे


संपादित करें : यह उत्तर अब मान्य नहीं है, जोड़ने के लिए नए fs.appendFile विधि को देखें।

नोड 0.8 में fs.appendFile :

 fs.appendFile('message.txt', 'data to append', function (err) { if (err) throw err; console.log('The "data to append" was appended to file!'); }); 

डॉक्स: http://nodejs.org/docs/latest/api/fs.html#fs_fs_appendfile_filename_data_encoding_utf8_callback

appendFile अलावा, आप किसी मौजूदा फ़ाइल में डेटा संलग्न करने के लिए appendFile एक झंडा भी पारित कर सकते हैं।

 fs.writeFile('log.txt', 'Hello Node', {'flag':'a'}, function(err) { if (err) { return console.error(err); } }); 

'A' को फ़्लैग करके, फ़ाइल के अंत में डेटा जोड़ दिया जाएगा।

जब आप एक लॉग फ़ाइल में लिखना चाहते हैं, अर्थात् किसी फ़ाइल के अंत में डेटा संलग्न करना, ऐपेंडफ़ाइल का उपयोग कभी नहीं करता है, ऐपेंडफ़ाइल आपके फ़ाइल में जो भी डेटा जोड़ते हैं, उसके लिए फ़ाइल संभाल खोलता है और कुछ उद्घाटन के बाद, आपको एक सुंदर एमीफील मिलती है

मैं जोड़ सकता हूं कि अपन्डेफाइल एक लिस्टस्ट्रीम के मुकाबले उपयोग करना आसान नहीं है I

एपेंडफ़ाइल के साथ उदाहरण:

 console.log(new Date().toISOString()); [...Array(10000)].forEach( function (item,index) { fs.appendFile("append.txt", index+ "\n", function (err) { if (err) console.log(err); }); }); console.log(new Date().toISOString()); 

अपने कंप्यूटर पर 8000 तक, आप फ़ाइल में डेटा जोड़ सकते हैं, फिर आप इसे प्राप्त कर सकते हैं:

 { Error: EMFILE: too many open files, open 'C:\mypath\append.txt' at Error (native) errno: -4066, code: 'EMFILE', syscall: 'open', path: 'C:\\mypath\\append.txt' } 

इसके अलावा एपेंडफाइल तब लिखा जाएगा जब यह सक्षम हो, तो आपके लॉग टाइमस्टैम्प द्वारा नहीं लिखे जाएंगे। आप उदाहरण के साथ परीक्षण कर सकते हैं, 1000 को 100000 के स्थान पर सेट करें, ऑर्डर यादृच्छिक होगा, फ़ाइल पर पहुंच पर निर्भर करता है।

यदि आप किसी फ़ाइल में जोड़ना चाहते हैं, तो आपको इस तरह एक लेखन योग्य स्ट्रीम का उपयोग करना होगा :

 var stream = fs.createWriteStream("append.txt", {flags:'a'}); console.log(new Date().toISOString()); [...Array(10000)].forEach( function (item,index) { stream.write(index + "\n"); }); console.log(new Date().toISOString()); stream.end(); 

जब आप चाहते हैं तब आप इसे समाप्त कर देते हैं आपको stream.end () का भी उपयोग करने की ज़रूरत नहीं है, डिफ़ॉल्ट विकल्प ऑटोक्लोस है: सही है, इसलिए आपकी फ़ाइल समाप्त होने पर आपकी फ़ाइल समाप्त हो जाएगी और आप बहुत सारी फाइलें खोलने से बचें

 fd = fs.openSync(path.join(process.cwd(), 'log.txt'), 'a') fs.writeSync(fd, 'contents to append') fs.closeSync(fd) 

यहां एक पूर्ण स्क्रिप्ट है अपनी फाइल नाम भरें और इसे चलाएं और यह काम करना चाहिए! स्क्रिप्ट के पीछे तर्क पर एक वीडियो ट्यूटोरियल है

 var fs = require('fs'); function ReadAppend(file, appendFile){ fs.readFile(appendFile, function (err, data) { if (err) throw err; console.log('File was read'); fs.appendFile(file, data, function (err) { if (err) throw err; console.log('The "data to append" was appended to file!'); }); }); } // edit this with your file names file = 'name_of_main_file.csv'; appendFile = 'name_of_second_file_to_combine.csv'; ReadAppend(file, appendFile); 

मैं इस सुझाव को केवल इसलिए पेशकश करता हूं क्योंकि खुले झंडे पर नियंत्रण कभी-कभी उपयोगी होता है, उदाहरण के लिए, आप इसे पहले किसी मौजूदा फ़ाइल को छोटा करना चाहते हैं और फिर उसे लिखने की एक श्रृंखला जोड़ सकते हैं – इस मामले में फ़ाइल खोलने पर 'w' ध्वज का उपयोग करें और जब तक सभी लिखते हैं, तब तक इसे बंद न करें। बेशक अनुलग्नकफ़ाइल हो सकता है कि आप क्या कर रहे हैं 🙂

  fs.open('log.txt', 'a', function(err, log) { if (err) throw err; fs.writeFile(log, 'Hello Node', function (err) { if (err) throw err; fs.close(log, function(err) { if (err) throw err; console.log('It\'s saved!'); }); }); }); 

Jfile पैकेज का उपयोग करना:

 myFile.text+='\nThis is new line to be appended'; //myFile=new JFile(path);