के बाद असली STDOUT को लिखना मैं System.out और System.err को अवरुद्ध करने की कोशिश कर रहा हूं, लेकिन जब आवश्यक हो तो मूल धाराओं को लिखने की क्षमता बनाए रखता हूं।जावा: System.setOut
PrintStream ps = System.out;
System.setOut(new MyMagicPrintStream());
ps.println("foo");
दुर्भाग्य से, सिस्टम वर्ग 'कार्यान्वयन के विवरण का मतलब है मेरे उदाहरण में, "foo" असली stdout के instread MyMagicPrintStream लिए भेजा जाता है। क्या किसी को असली/मूल आउटपुटस्ट्रीम के संदर्भ प्राप्त करने के बारे में पता है।
धन्यवाद!
पीएस: अन्यथा इसका परिणाम एसईओ के लिए एक स्टैक ओवरफ्लो एरर < में होगा।
(मैं आप ऐसा कर सकता है पता नहीं था!) हालांकि, इस दृष्टिकोण के साथ एक संभावित समस्या है। यदि आपके एप्लिकेशन का कोई अन्य हिस्सा मूल सिस्टम का उपयोग कर रहा है। 'प्रिंटस्ट्रीम' ऑब्जेक्ट के बाहर, तो दो धाराओं से stdout आउटपुट को यादृच्छिक रूप से interleaved किया जा सकता है। एक स्ट्रीम ऑब्जेक्ट का उपयोग करना इससे कम प्रवण होगा। –
मुझे लगता है कि ऐसा नहीं होगा क्योंकि प्रिंटस्ट्रीम में बफर नहीं हैं इसलिए डेटा सीधे stdout पर आना चाहिए, है ना? – fqsxr
मुझे पता था कि मूल फ़ाइल डिस्क्रिप्टर प्राप्त करने का एक तरीका होना चाहिए। यह पूर्ण है। धन्यवाद! – Jim