Node.js में JavaScript के साथ फ़ाइल सिस्टम के साथ कार्य करना: पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: Node.js में फ़ाइल सिस्टम के साथ कार्य क्यों महत्वपूर्ण है

आधुनिक वेब डेवलपमेंट में, फ़ाइल सिस्टम के साथ इंटरैक्शन के बिना काम चलाना मुश्किल है। चाहे वह उपयोगकर्ताओं के अवतार अपलोड करना हो, लॉग जनरेट करना हो, CSV रिपोर्ट प्रोसेस करना हो या कॉन्फ़िगरेशन फ़ाइलें पढ़ना हो — Node.js इन कार्यों के लिए एक शक्तिशाली अंतर्निहित मॉड्यूल fs (File System) प्रदान करता है।

ब्राउज़र JavaScript के विपरीत, जहाँ सुरक्षा कारणों से फ़ाइलों तक पहुँच सख्ती से सीमित है, Node.js सर्वर की फ़ाइल सिस्टम पर पूर्ण नियंत्रण देता है। इस लेख में, हम व्यावहारिक उदाहरणों के साथ प्रमुख संचालनों को समझेंगे जो आपको फ़ाइलों और फ़ोल्डरों के साथ आत्मविश्वास से काम करने में मदद करेंगे।



आप क्या सीखेंगे:

  • फ़ाइलों को कैसे पढ़ें और लिखें (सिंक्रोनस और एसिंक्रोनस रूप से)
  • बड़ी फ़ाइलों के लिए स्ट्रीम (Streams) के साथ कैसे काम करें
  • फ़ोल्डर कैसे बनाएं, नाम बदलें और हटाएं
  • त्रुटियों और पथों को सही तरीके से कैसे संभालें


1. मूल बातें: फ़ाइलों को पढ़ना और लिखना

fs मॉड्यूल फ़ाइलों के साथ काम करने के तीन मुख्य दृष्टिकोण प्रदान करता है: सिंक्रोनस, एसिंक्रोनस (कॉलबैक के साथ) और प्रॉमिस पर आधारित। प्रॉमिस पर आधारित एसिंक्रोनस दृष्टिकोण (fs.promises) का उपयोग करने की अनुशंसा की जाती है — यह Event Loop को ब्लॉक नहीं करता है और पढ़ने में अधिक सुविधाजनक है।



1.1 फ़ाइल पढ़ना

पूरी फ़ाइल को पढ़ने का सबसे सरल तरीका readFile का उपयोग करना है।

const fs = require('fs').promises;

async function readConfig() { try { const data = await fs.readFile('./config.json', 'utf-8'); const config = JSON.parse(data); console.log('पोर्ट:', config.port); } catch (err) { console.error('पढ़ने में त्रुटि:', err.message); }}

readConfig();

महत्वपूर्ण: एन्कोडिंग ('utf-8') निर्दिष्ट करें, अन्यथा एक Buffer ऑब्जेक्ट वापस आएगा।



1.2 फ़ाइल में लिखना

लिखने के लिए writeFile (फ़ाइल को ओवरराइट करता है) या appendFile (अंत में जोड़ता है) का उपयोग करें।

const fs = require('fs').promises;

async function saveLog(message) { const logLine = `[${new Date().toISOString()}] ${message}`; try { await fs.appendFile('./app.log', logLine); console.log('लॉग सहेजा गया'); } catch (err) { console.error('लिखने में त्रुटि:', err); }}

saveLog('सर्वर शुरू हुआ');


2. बड़ी फ़ाइलों के साथ कार्य: स्ट्रीम (Streams)

कल्पना करें कि आपको 2 GB आकार की फ़ाइल पढ़नी है। readFile विधि इसे पूरी तरह से RAM में लोड करेगी, जिससे मेमोरी लीक हो सकती है। ऐसे मामलों के लिए स्ट्रीम (fs.createReadStream और fs.createWriteStream) मौजूद हैं।

स्ट्रीम डेटा को भागों (चंक्स) में प्रोसेस करती है, पूरी फ़ाइल को मेमोरी में स्टोर नहीं करती।



उदाहरण: बड़ी फ़ाइल की प्रतिलिपि बनाना

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

const source = path.join(__dirname, 'bigfile.zip');const destination = path.join(__dirname, 'copy.zip');

const readStream = fs.createReadStream(source);const writeStream = fs.createWriteStream(destination);

readStream.on('data', (chunk) => { console.log(`${chunk.length} बाइट पढ़े गए`); writeStream.write(chunk);});

readStream.on('end', () => { writeStream.end(); console.log('प्रतिलिपि पूर्ण');});

readStream.on('error', (err) => { console.error('पढ़ने में त्रुटि:', err);});

सुझाव: प्रतिलिपि बनाने के लिए stream मॉड्यूल से अंतर्निहित pipeline विधि का उपयोग करना अधिक सुविधाजनक है — यह स्वचालित रूप से त्रुटियों को संभालती है और स्ट्रीम को बंद करती है।



3. निर्देशिकाओं का प्रबंधन

फ़ोल्डरों के साथ काम करना भी उतना ही महत्वपूर्ण हिस्सा है। Node.js निर्देशिकाओं को बनाने, पढ़ने और हटाने की अनुमति देता है।



3.1 फ़ोल्डर बनाना और जाँचना

const fs = require('fs').promises;

async function ensureDir(dirPath) { try { await fs.mkdir(dirPath, { recursive: true }

ब्लॉग

पुस्तक अनुशंसाएँ