आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

कच्ची मेमोरी में एक बफर एक विशिष्ट स्थान है। यह अतिरिक्त बाइनरी डेटा के लिए एक अस्थायी भंडारण स्थान के रूप में कार्य करता है जिसे प्रसंस्करण इकाई उस विशेष क्षण में स्वीकार नहीं कर सकती है।

Node.js में बफ़र क्लास शामिल है। फ़ाइल सिस्टम पर टीसीपी (ट्रांसफर कंट्रोल प्रोटोकॉल) स्ट्रीम और रीड-राइट ऑपरेशंस का प्रबंधन करते समय यह बाइनरी डेटा से निपट सकता है।

बफ़र की सामग्री बनाना, पढ़ना और बदलना सीखें।

बफर बनाना

Node.js में बफ़र बनाने के लिए, आप इसका उपयोग करेंगे आवंटन () या से() तरीके। आवंटन () विधि एक नया बफ़र बनाता है, निर्माण के दौरान इसके आकार को पहले और एकमात्र आवश्यक पैरामीटर के रूप में निर्दिष्ट करता है। यह तब उपयोगी होता है जब आपके पास बफ़र बनाते समय स्टोर करने के लिए कोई डेटा नहीं होता है।

जब आप इसके साथ बफर बनाते हैं तो बफर आकार पैरामीटर बाइट्स में निर्दिष्ट करें आवंटन () तरीका। उदाहरण के लिए:

कॉन्स्ट बफ = बफर.आवंटन (8);
सांत्वना देनालॉग (बफ);
// आउटपुट:
instagram viewer

जब आप इसके साथ बनाते हैं तो बफ़र क्लास स्वचालित रूप से शून्य को नए डेटा के लिए प्लेसहोल्डर मान के रूप में जोड़ता है आवंटन () तरीका।

बफ़र वर्ग प्रत्येक 0 मान को इस प्रकार व्यक्त करता है 00, हेक्साडेसिमल प्रारूप का उपयोग करना। इस उदाहरण में, इसमें कुल आठ मान हैं।

बफ़र को विभिन्न प्लेसहोल्डर मानों के साथ आरंभ करने के लिए, एक सेकंड पास करें भरना पैरामीटर:

कॉन्स्ट buf_fill = बफ़र.आवंटन (8, 5);
सांत्वना देना.लॉग (buf_filled);
// आउटपुट:

यह ऑब्जेक्ट स्मृति में एक भाग का हवाला देता है जो मान के 8 बाइट संग्रहीत करता है 05. ध्यान दें कि यद्यपि आपने एक संख्या को पास किया है भरना पैरामीटर, बफ़र्स केवल बाइनरी में डेटा संग्रहीत करते हैं।

बफ़र को मेमोरी आवंटित करने के बाद, कॉल करके डेटा लिखें लिखना() तरीका:

कॉन्स्ट बफ = बफर.आवंटन (8);

buf.लिखना("वी", "यूटीएफ-8");
सांत्वना देना.लॉग (buf)
// आउटपुट:

buf.लिखना("वा","यूटीएफ-8");
सांत्वना देना.लॉग (buf)
// आउटपुट:

लिखना() विधि पहले पैरामीटर को परिवर्तित करने के लिए वर्ण एन्कोडिंग का उपयोग करती है यूटीएफ-8 और फिर बफ़र को स्ट्रिंग लिखता है। स्ट्रिंग में दूसरा वर्ण जोड़ने से दूसरा बाइट भर जाएगा।

स्ट्रिंग या सरणियों जैसे मौजूदा डेटा प्रकारों से डेटा निकालने के लिए, का उपयोग करें से() तरीका। यह विधि तार और सरणियों से बफ़र्स बनाती है।

उदाहरण के लिए:

// डोरी
कॉन्स्ट स्ट्रिंगबफ = बफर.फ्रॉम ('डोरी')
सांत्वना देनालॉग (स्ट्रिंगबफ)
// आउटपुट:

// ऐरे
कॉन्स्ट ऐरेबफ = बफर.फ्रॉम ([97, 114, 114, 97, 121], 'हेक्स')
सांत्वना देनालॉग (arrayBuf);
// आउटपुट:

से() विधि इनपुट को इसके पहले पैरामीटर के रूप में लेती है, डेटा को एन्कोड करने के लिए आवश्यक बाइट्स की संख्या की गणना करती है, और फिर बफ़र को परिणाम भेजती है। दूसरे पैरामीटर के रूप में एक अन्य एन्कोडिंग प्रारूप की आपूर्ति करके, आप डिफ़ॉल्ट एन्कोडिंग (UTF-8) को ओवरराइड कर सकते हैं।

को नंबर पास करना से() विधि में त्रुटि होगी।

एक बफर पढ़ना

हालाँकि बफ़र सरणियों के समान हैं, वे आकार बदलने योग्य नहीं हैं और इससे निपट सकते हैं बाइनरी कंप्यूटर डेटा अंतर्निहित तरीकों के लिए धन्यवाद।

बफ़र वर्ग हमें जावास्क्रिप्ट के वर्ग ब्रैकेट सिंटैक्स का उपयोग करके इसके डेटा के अलग-अलग बाइट्स पढ़ने की अनुमति देता है।

उदाहरण के लिए:

कॉन्स्ट myBuf = बफर.फ्रॉम ('मेरा');
सांत्वना देना।लकड़ी का लट्ठा(MyBuf[1]);
// आउटपुट: 105

सांत्वना देना।लकड़ी का लट्ठा(MyBuf[3]);
// आउटपुट: 101

सांत्वना देना।लकड़ी का लट्ठा(MyBuf[5]);
// आउटपुट: अपरिभाषित

उपरोक्त कोड ब्लॉक उनके दशमलव प्रतिनिधित्व में पहले और तीसरे बाइट्स के मान प्राप्त करने के लिए स्क्वायर ब्रैकेट सिंटैक्स को नियोजित करता है। अमान्य बाइट प्राप्त करने का प्रयास करने पर परिणाम होगा अपरिभाषित गलती।

इसके सभी डेटा तक पहुँचने के लिए, बफ़र वर्ग विधियों के साथ आता है toJSON () और स्ट्रिंग(), जो सामग्री को दो अलग-अलग स्वरूपों में प्राप्त करते हैं।

स्ट्रिंग() विधि एक स्ट्रिंग को बफर सामग्री के रूप में आउटपुट करती है:

कॉन्स्ट myBuf = बफर.फ्रॉम ('मेरा');
सांत्वना देना।लकड़ी का लट्ठा(myBuf।स्ट्रिंग());
// आउटपुट: 'मेरा'

कॉन्स्ट नंबरबफ = बफर.फ्रॉम ([123]);
सांत्वना देना।लकड़ी का लट्ठा(नंबरबफ।स्ट्रिंग())
// आउटपुट: '{'

कॉन्स्ट खालीबफ = बफर.आलोक (5);
सांत्वना देना।लकड़ी का लट्ठा(emptybuf।स्ट्रिंग());
// आउटपुट: '\\x00\\x00\\x00\\x00\\x00'

पहली कॉल बफ़र को मान के साथ आरंभ करती है "मेरा”, जिसे कॉल toString दोहराता है। दूसरा उदाहरण इनिशियलाइज़ेशन के लिए सिंगल-इंट ऐरे का उपयोग करता है, जिसमें "के रूप में एक स्ट्रिंग प्रतिनिधित्व है{" चरित्र। अंतिम मामले में, पाँच के साथ एक बफ़र शून्य मान स्ट्रिंग लौटाता है "\x00\x00\x00\x00\x00”. डोर \x00 अशक्त का हेक्साडेसिमल प्रतिनिधित्व है।

स्ट्रिंग() विधि हमेशा परिणाम को स्ट्रिंग प्रारूप में आउटपुट करती है, इससे कोई फर्क नहीं पड़ता कि आप किस प्रकार के डेटा को बफर के साथ प्रारंभ करते हैं।

.toJSON() विधि बफ़र डेटा का दशमलव प्रतिनिधित्व लौटाती है, बफ़र को आरंभ करने के लिए आपके द्वारा उपयोग किए गए डेटा की परवाह किए बिना।

उदाहरण के लिए:

कॉन्स्ट myBuf = बफर.फ्रॉम ('मेरा');
सांत्वना देना।लकड़ी का लट्ठा(myBuf.toJSON());
// आउटपुट: { प्रकार: 'बफर', डेटा: [77, 105, 110, 101]}

JSON आउटपुट में एक है प्रकार संपत्ति के मूल्य के साथ बफर इसकी उत्पत्ति को इंगित करने के लिए। इसकी डेटा प्रॉपर्टी दशमलव की एक सरणी संग्रहीत करती है जो मूल बाइट सरणी का प्रतिनिधित्व करती है।

एक बफर को संशोधित करना

बफ़र के अलग-अलग बाइट्स तक पहुँचने के समान, आप वर्ग कोष्ठक सिंटैक्स का उपयोग करके बफ़र की सामग्री के अलग-अलग बाइट्स को भी संशोधित कर सकते हैं।

किसी व्यक्तिगत सामग्री को बदलने के लिए वर्ग कोष्ठक सिंटैक्स का उपयोग करते समय, आप केवल मान का दशमलव प्रतिनिधित्व निर्दिष्ट कर सकते हैं।

उदाहरण के लिए:

myBuf [0] = 70
सांत्वना देना।लकड़ी का लट्ठा(myBuf।स्ट्रिंग())
// आउटपुट: 'ठीक है'

क्योंकि बफ़र्स बाइनरी डेटा हैं, आप बफ़र के एक विशिष्ट भाग को एक स्ट्रिंग नहीं दे सकते। यदि आप एक व्यक्तिगत बाइट को एक स्ट्रिंग में सेट करने का प्रयास करते हैं, तो बफ़र इसे एक अशक्त वर्ण में अनुवादित करेगा।

उदाहरण के लिए:

मायबफ[0] = 'एफ';
सांत्वना देना।लकड़ी का लट्ठा(myBuf।स्ट्रिंग());
// आउटपुट: '\\x00ine'

वैकल्पिक रूप से, आप का उपयोग करके बफ़र की संपूर्ण सामग्री को बदल सकते हैं लिखना() तरीका।

बफर की लंबाई के बाहर एक इंडेक्स डालने पर विचार करें। एक त्रुटि वापस करने के बजाय, बफ़र अमान्य अनुक्रमणिका को अनदेखा करता है और मूल बफ़र सामग्री को बरकरार रखता है।

उदाहरण के लिए, का पांचवां तत्व सेट करने का प्रयास करें myBuf को आर इसके दशमलव प्रतिनिधित्व के माध्यम से 114:

मायबफ [4] = 114;
सांत्वना देना।लकड़ी का लट्ठा(myBuf।स्ट्रिंग());
// आउटपुट: 'मेरा'

ध्यान दें कि स्ट्रिंग() विधि समान मान लौटाती है 'मेरा'.

चूँकि आप एक बफ़र का आकार नहीं बदल सकते हैं, एक से अधिक डेटा लिखने का प्रयास करने से अतिरिक्त डेटा को छोड़ दिया जाएगा। उदाहरण के लिए:

कॉन्स्ट buf1 = बफर.आवंटन (5)
buf1.लिखें('संख्या');
सांत्वना देना।लकड़ी का लट्ठा(buf1।स्ट्रिंग())
// आउटपुट: 'संख्या'

का उपयोग स्ट्रिंग() विधि बफर डेटा की पुष्टि करने के लिए, यह वापस आती है 'सुनबे' इसके बजाय 'संख्या'। जो अंदर डाला गया तर्क है लिखना() तरीका।

बफ़र इंडेक्स शून्य से शुरू होने वाले सीरियल फ़ैशन में लिखते हैं। लिखना() विधि क्रमिक रूप से बाइट्स को बफ़र में जोड़ती है, किसी भी पिछले डेटा को अधिलेखित करती है।

उदाहरण के लिए:

कॉन्स्ट buf2 = बफ़र.आवंटन (6);

buf2.लिखें('सदस्य');
सांत्वना देना।लकड़ी का लट्ठा(buf2।स्ट्रिंग())
// आउटपुट: 'सदस्य'

buf2.लिखें('नमस्ते');
सांत्वना देना।लकड़ी का लट्ठा(buf2।स्ट्रिंग());
// आउटपुट: 'हिंबर'

उपरोक्त कोड छह-बाइट बफर बनाता है और स्ट्रिंग जोड़ता है "सदस्य" इसका उपयोग करने के लिए लिखना() तरीका।

यह तब बफर को नई सामग्री के साथ अद्यतन करता है जो पहले की सामग्री की तुलना में कम मेमोरी स्थान लेता है।

इसके परिणामस्वरूप एक नई स्ट्रिंग का निर्माण होता है जिसमें पहले दो बाइट्स अधिलेखित हो जाते हैं और शेष बाइट्स अपरिवर्तित रह जाते हैं।

कई एपीआई और डेटा संरचनाएं बफ़र्स का उपयोग करती हैं

अब आप जानते हैं कि एक बफ़र कैसे बनाया जाता है, एक को लिखें, इसकी सामग्री को पढ़ें और इसे उचित तरीकों से संशोधित करें।

Node.js बफर क्लास के साथ काम करने के लिए कई अन्य तरीके उपलब्ध हैं।

आपको इन विधियों को जानना चाहिए और बफ़र्स को समझना चाहिए ताकि यह समझ सकें कि धाराएँ और फ़ाइल सिस्टम जैसी विभिन्न अवधारणाएँ कैसे काम करती हैं।