दिलचस्प पोस्ट
किसी तालिका में मौजूद स्कीमा में जांच कैसे करें टेक्स्ट प्रॉपर्टी सेट करने के बाद UITextView शैली को रीसेट किया जा रहा है एक Chrome एक्सटेंशन से HTTP प्रतिक्रियाओं को संशोधित करें क्यों MySQL autoincrement असफल आवेषण पर वृद्धि करता है? टॉमकेट गिस / जेडीबीसी मेमोरी लीक सही पक्ष में एंड्रॉइड चेकबॉक्स कैसे दिखाएं? IOS 5 में UITabBarItem में पाठ का रंग कैसे बदल सकता है चित्रों को डेटाबेस में कैसे सहेजें बेस64 एन्कोडिंग और ऑरेकल में डीकोडिंग एक एसटीए धागा चलने वाले कार्य (टीपीएल) कैसे तैयार करें? एक्सएसडी: शामिल और एक्सएसडी: आयात के बीच अंतर क्या है? क्यों टुकड़ा और रेंज ऊपरी बाध्य अनन्य हैं? एंड्रॉइड आईसीएस पर सिस्टम बार को छुपाने का आसान तरीका स्ट्रिंग की जगह काम करने के लिए प्रतीत नहीं होता है एक खाली बिटमैप बनाने और हालांकि कैनवास एंड्रॉइड में ड्राइंग

जावा में स्ट्रिंग को कंसोल आउटपुट रीडायरेक्ट करें

मेरे पास एक फ़ंक्शन है जिसकी वापसी प्रकार VOID है और यह कंसोल पर सीधे प्रिंट करता है I

हालांकि मुझे स्ट्रिंग में आउटपुट की आवश्यकता है ताकि मैं उस पर काम कर सकूं।

जैसा कि मैं फ़ंक्शन के साथ कोई भी परिवर्तन नहीं कर सकता जैसे कि वापसी प्रकार VOID है, इसलिए मुझे उस आउटपुट को स्ट्रिंग में रीडायरेक्ट करना होगा।

मैं इसे जावा में कैसे रीडायरेक्ट कर सकता हूं?

स्टडआउट को स्ट्रिंग पर रीडायरेक्ट करने के बारे में कई प्रश्न हैं लेकिन वे केवल उपयोगकर्ता से लिया इनपुट को पुनर्निर्देशित करते हैं और कुछ फ़ंक्शन के उत्पादन नहीं …

Solutions Collecting From Web of "जावा में स्ट्रिंग को कंसोल आउटपुट रीडायरेक्ट करें"

यदि फ़ंक्शन System.out छपाई कर रहा है, तो आप अपने द्वारा प्रदान किए गए PrintStream पर जाने के लिए System.out को बदलने के लिए PrintStream विधि का उपयोग कर उस आउटपुट को कैप्चर कर सकते हैं। यदि आप एक PrintStream कनेक्ट एक PrintStream बनाते हैं, तो आप String रूप में आउटपुट को कैप्चर कर सकते हैं।

उदाहरण:

  // Create a stream to hold the output ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); // IMPORTANT: Save the old System.out! PrintStream old = System.out; // Tell Java to use your special stream System.setOut(ps); // Print some output: goes to your special stream System.out.println("Foofoofoo!"); // Put things back System.out.flush(); System.setOut(old); // Show what happened System.out.println("Here: " + baos.toString()); 

यह प्रोग्राम केवल एक पंक्ति प्रिंट करता है:

  Here: Foofoofoo! 

यहां कंसोलऑटपुट कैप्चरर नाम की उपयोगिता श्रेणी है यह आउटपुट को मौजूदा कंसोल पर जाने की अनुमति देता है, लेकिन दृश्य के पीछे आउटपुट टेक्स्ट को कैप्चर करता रहता है। आप नियंत्रित कर सकते हैं कि आरंभ / रोक तरीके से कैप्चर करना क्या है दूसरे शब्दों में, कंसोल आउटपुट को कैप्चर करने के लिए कॉल प्रारंभ करें और एक बार जब आप कैप्चर कर लेते हैं, तो आप स्टॉप विधि को कॉल कर सकते हैं जो स्टार्ट-स्टॉप कॉल्स के बीच के समय विंडो के लिए कंसोल आउटपुट को रिटर्न करता है। यह वर्ग धागा-सुरक्षित नहीं है हालांकि

 import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.util.Arrays; import java.util.List; public class ConsoleOutputCapturer { private ByteArrayOutputStream baos; private PrintStream previous; private boolean capturing; public void start() { if (capturing) { return; } capturing = true; previous = System.out; baos = new ByteArrayOutputStream(); OutputStream outputStreamCombiner = new OutputStreamCombiner(Arrays.asList(previous, baos)); PrintStream custom = new PrintStream(outputStreamCombiner); System.setOut(custom); } public String stop() { if (!capturing) { return ""; } System.setOut(previous); String capturedValue = baos.toString(); baos = null; previous = null; capturing = false; return capturedValue; } private static class OutputStreamCombiner extends OutputStream { private List<OutputStream> outputStreams; public OutputStreamCombiner(List<OutputStream> outputStreams) { this.outputStreams = outputStreams; } public void write(int b) throws IOException { for (OutputStream os : outputStreams) { os.write(b); } } public void flush() throws IOException { for (OutputStream os : outputStreams) { os.flush(); } } public void close() throws IOException { for (OutputStream os : outputStreams) { os.close(); } } } }