मुझे OutputStream
एक एपीआई के लिए निर्दिष्ट करने की आवश्यकता है जिसका मैं उपयोग कर रहा हूं, लेकिन मुझे वास्तव में आउटपुट की आवश्यकता नहीं है। क्या जावा के OutputStream
बराबर है > /dev/null
?
मुझे OutputStream
एक एपीआई के लिए निर्दिष्ट करने की आवश्यकता है जिसका मैं उपयोग कर रहा हूं, लेकिन मुझे वास्तव में आउटपुट की आवश्यकता नहीं है। क्या जावा के OutputStream
बराबर है > /dev/null
?
जवाबों:
जावा 11 के बाद से, एक स्थिर उपयोगिता है जो वास्तव में आपकी आवश्यकता है, एक स्थिर कारखाना विधि OutputStream.nullOutputStream()
:
एक नया OutputStream देता है जो सभी बाइट्स को छोड़ देता है। लौटी हुई धारा शुरू में खुली है। पास () विधि को कॉल करके धारा बंद कर दी जाती है। बाद में (बंद) कॉल का कोई प्रभाव नहीं है।
/**Writes to nowhere*/
public class NullOutputStream extends OutputStream {
@Override
public void write(int b) throws IOException {
}
}
OutputStream nullOutputStream = new OutputStream() { @Override public void write(int b) { } };
जावा यह प्रतीत नहीं होता है लेकिन अपाचे कॉमन्स आईओ करता है। निम्नलिखित पर एक नज़र डालें:
उम्मीद है की वो मदद करदे।
यह अभी तक उल्लेख नहीं किया गया है, इसलिए मैं अमरूद के बाइटस्ट्रीम भी जोड़ूंगा । nullOutputStream () , कुछ लोग Apache Commons IO पर अमरूद पसंद कर सकते हैं या पहले से ही अपने प्रोजेक्ट में लगा सकते हैं।
नोट: यदि आप अमरूद (1.0 से 13.0 तक) के पुराने संस्करण का उपयोग करते हैं, तो आप com.google.io.NullOutputStream का उपयोग करना चाहते हैं ।
पहले से उपलब्ध कराए गए उत्तरों को फिर से लिखना -
जावा में एक NullOutputStream
वर्ग नहीं है । हालाँकि आप अपना स्वयं का रोल कर सकते हैं OutputStream
जो इसके लिए लिखे गए किसी भी डेटा को अनदेखा करता है - दूसरे शब्दों में write(int b)
, write(byte[] b)
और write(byte[] b, int off, int len)
इसमें खाली पद्धति वाले निकाय होंगे। यह आम आईओ NullOutputStream
वर्ग करता है।
नहीं, लेकिन इसे लागू करना बहुत आसान है।
यह प्रश्न देखें "कोडबेस से System.out.println को कैसे हटाएं"
और फिर आपको बस:
System.setOut( DevNull.out );
या कुछ इस तरह का :)
Java 11 ने OutputStream.nullOutputStream () जोड़ा
कस्बे में नया लड़का है, जो एक आकर्षण की तरह इस बात का ध्यान रखता है, कोड की कुछ पंक्तियों को काम करना चाहिए। इसका JDK 11 और nullWriter () वहां पेश किया गया है, जो इस बात का ध्यान रखता है। ऑपरेटिंग सिस्टम (OS) के बारे में चिंता किए बिना, एक ही पुरानी समस्या से निपटने के लिए यहां कोड जाता है।
String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();
आशा है कि यह किसी की मदद कर सकता है!
मुझे विश्वास है कि यह वही है जो आप खोज रहे हैं, मैं एक ही चीज की तलाश में था: यह मानक त्रुटि से आउटपुट धाराओं को पुनर्निर्देशित करने के लिए है, ProcessBuilder वस्तुओं में मानक आउट।
Blockquote
pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
ByteArrayOutputStream
वह है जो आप चाहते हैं (यह मानते हुए कि एपीआई पाठ का उत्पादन करेगा)। बस एक नया पल।