जब आप डेटा की स्ट्रीम को सजाना चाहते हैं तो आप उनका उपयोग करते हैं।
याद रखें कि ये स्ट्रीम क्लास इंस्टेंस स्वयं को किसी अन्य स्ट्रीम इंस्टेंस के आसपास लपेटते हैं (चाहे इनमें से किसी एक का सबक्लास या नहीं) और कुछ फीचर जोड़ें, कुछ प्रोसेसिंग जोड़ें, डेटा में कुछ बदलाव करें जैसे यह गुजरता है।
उदाहरण के लिए, आप कुछ स्ट्रीम से सभी एकाधिक रिक्त स्थान को हटाना चाहेंगे। आप फ़िल्टरइनपुटस्ट्रीम का अपना सबक्लास बनाते हैं और read()
विधि को ओवरराइड करते हैं। मैं सभी विवरण परेशान करने के लिए उपवर्ग में विधि के लिए नहीं जा रहा हूँ, लेकिन यहाँ है कुछ sorta-जावा:
private boolean lastWasBlank = false;
public int read() {
int chr = super.read();
if (chr == ' ') {
if (lastWasBlank) {
return read();
} else {
lastWasBlank = true;
}
} else {
lastWasBlank = false;
}
return chr;
}
वास्तविक जीवन में, क्या तुम करोगी शायद अन्य दो read()
भी तरीकों के साथ गड़बड़।
अन्य उपयोग:
- लॉग सब कुछ धारा
- माध्यम से बह रही 'टी' उपयोगिता डुप्लिकेट धारा पढ़ा जा रहा दो तरीके नियंत्रित किया जाता है।
- विंडोज, मैक और यूनिक्स/लिनक्स प्रारूप
- के बीच लाइन अंतराल को कनवर्ट करें मॉडेम या सीरियल पोर्ट या वायरलेस नेटवर्क कनेक्शन जैसे धीमी संचरण विधियों को अनुकरण करने में देरी जोड़ें।
स्रोत
2013-07-05 18:21:08
ठीक है, लेकिन BufferedInputStream और DigestInputStream वास्तव में अंतर्निहित धारा के साथ कुछ करना। क्या FilterInputStream क्या करता है? – ed22