इस ट्यूटोरियल में, हम उदाहरणों की मदद से जावा बफ़रडइनप्यूटस्ट्रीम और इसके तरीकों के बारे में जानेंगे।
BufferedInputStream
के वर्ग java.io
पैकेज अन्य इनपुट धाराओं के साथ प्रयोग किया जाता है और अधिक कुशलता से डेटा पढ़ने के लिए (बाइट्स में)।
यह InputStream
अमूर्त वर्ग का विस्तार करता है ।
बफ़रड इंप्यूटस्ट्रीम की कार्यप्रणाली
BufferedInputStream
एक आंतरिक का कहना है 8192 बाइट्स के बफर ।
में पढ़ने के संचालन के दौरान BufferedInputStream
, बाइट्स का एक हिस्सा डिस्क से पढ़ा जाता है और आंतरिक बफर में संग्रहीत होता है। और आंतरिक बफर बाइट्स से व्यक्तिगत रूप से पढ़ा जाता है।
इसलिए, डिस्क पर संचार की संख्या कम हो जाती है। यही कारण है कि बाइट्स पढ़ने से तेजी से उपयोग किया जाता है BufferedInputStream
।
एक बफर्डइन्पुटस्ट्रीम बनाएं
बनाने के लिए BufferedInputStream
, हमें java.io.BufferedInputStream
पहले पैकेज आयात करना चाहिए । एक बार जब हम पैकेज को यहाँ आयात करते हैं तो हम इनपुट स्ट्रीम कैसे बना सकते हैं।
// Creates a FileInputStream FileInputStream file = new FileInputStream(String path); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferInputStream(file);
उपरोक्त उदाहरण में, हमने नामित फ़ाइल के BufferdInputStream
साथ एक नामित बफर बनाया है FileInputStream
।
यहां, आंतरिक बफर में 8192 बाइट्स का डिफ़ॉल्ट आकार है। हालाँकि, हम आंतरिक बफर के आकार को भी निर्दिष्ट कर सकते हैं।
// Creates a BufferedInputStream with specified size internal buffer BufferedInputStream buffer = new BufferInputStream(file, int size);
बफर फ़ाइलों से बाइट्स को अधिक तेज़ी से पढ़ने में मदद करेगा।
BufferedInputStream के तरीके
BufferedInputStream
वर्ग के लिए विभिन्न तरीकों के लिए कार्यान्वयन में पेश प्रदान करता है InputStream
वर्ग।
read () विधि
read()
- इनपुट स्ट्रीम से एक सिंगल बाइट पढ़ता हैread(byte() arr)
- निर्दिष्ट सरणी में स्ट्रीम और स्टोर से बाइट्स पढ़ता हैread(byte() arr, int start, int length)
- स्ट्रीम से लंबाई के बराबर बाइट की संख्या को पढ़ता है और स्थिति से शुरू होने वाले निर्दिष्ट सरणी में स्टोर करता है
मान लें कि हमारे पास निम्न सामग्री के साथ input.txt नामक एक फ़ाइल है।
This is a line of text inside the file.
चलो फ़ाइल का उपयोग करके पढ़ने की कोशिश करते हैं BufferedInputStream
।
import java.io.BufferedInputStream; import java.io.FileInputStream; class Main ( public static void main(String() args) ( try ( // Creates a FileInputStream FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream input = new BufferedInputStream(file); // Reads first byte from file int i = input .read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the file i = input.read(); ) input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
आउटपुट
यह फ़ाइल के अंदर पाठ की एक पंक्ति है।
उपरोक्त उदाहरण में, हमने बफर के साथ बफर बफर स्ट्रीम बनाई है FileInputStream
। इनपुट स्ट्रीम फ़ाइल input.txt के साथ जुड़ी हुई है ।
FileInputStream file = new FileInputStream("input.txt"); BufferedInputStream buffer = new BufferedInputStream(file);
यहाँ, हमने read()
बफ़र रीडर के आंतरिक बफर से बाइट्स की एक सरणी को पढ़ने के लिए विधि का उपयोग किया है ।
उपलब्ध () विधि
इनपुट स्ट्रीम में उपलब्ध बाइट्स की संख्या प्राप्त करने के लिए, हम available()
विधि का उपयोग कर सकते हैं । उदाहरण के लिए,
import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + buffer.available()); // Reads bytes from the file buffer.read(); buffer.read(); buffer.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + buffer.available()); buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
आउटपुट
शुरुआत में उपलब्ध बाइट्स: 39 उपलब्ध बाइट्स अंत में: 36
उपरोक्त उदाहरण में,
- हम पहले
available()
इनपुट स्ट्रीम में उपलब्ध बाइट्स की संख्या की जांच करने के लिए विधि का उपयोग करते हैं । - फिर, हमने
read()
इनपुट स्ट्रीम से 3 बाइट्स पढ़ने के लिए 3 बार विधि का उपयोग किया है। - अब, बाइट्स पढ़ने के बाद हमने फिर से उपलब्ध बाइट्स की जाँच की है। इस बार उपलब्ध बाइट्स में 3 की कमी हुई।
छोड़ना () विधि
बाइट्स की निर्दिष्ट संख्या को छोड़ने और छोड़ने के लिए, हम skip()
विधि का उपयोग कर सकते हैं । उदाहरण के लिए,
import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main ( public static void main(String args()) ( try ( // Suppose, the input.txt file contains the following text // This is a line of text inside the file. FileInputStream file = new FileInputStream("input.txt"); // Creates a BufferedInputStream BufferedInputStream buffer = new BufferedInputStream(file); // Skips the 5 bytes buffer.skip(5); System.out.println("Input stream after skipping 5 bytes:"); // Reads the first byte from input stream int i = buffer.read(); while (i != -1) ( System.out.print((char) i); // Reads next byte from the input stream i = buffer.read(); ) // Closes the input stream buffer.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
आउटपुट
5 बाइट्स लंघन के बाद इनपुट स्ट्रीम: फ़ाइल के अंदर पाठ की एक पंक्ति है।
उपरोक्त उदाहरण में, हमने skip()
फ़ाइल इनपुट स्ट्रीम से 5 बाइट्स को छोड़ने के लिए विधि का उपयोग किया है। इसलिए, बाइट्स 'T'
, 'h'
, 'i'
, 's'
और ' '
इनपुट धारा से छोड़ दिया जाता है।
बंद () विधि
बफर इनपुट स्ट्रीम को बंद करने के लिए, हम close()
विधि का उपयोग कर सकते हैं । एक बार close()
विधि कहा जाता है, हम डेटा को पढ़ने के लिए इनपुट स्ट्रीम का उपयोग नहीं कर सकते हैं।
बफ़रडइनप्यूटस्ट्रीम की अन्य विधियाँ
तरीके | वर्णन |
---|---|
mark() | इनपुट स्ट्रीम में स्थिति को चिह्नित करें जिसमें डेटा पढ़ा गया है |
reset() | नियंत्रण को उस बिंदु पर इनपुट स्ट्रीम में लौटाता है जहाँ चिह्न सेट किया गया था |
अधिक जानने के लिए, Java BufferdInputStream (आधिकारिक जावा प्रलेखन) पर जाएँ।