2010-05-21 14 views
6

एक कक्षा है जिसके साथ मैं काम कर रहा हूं जिसमें display() फ़ंक्शन है जो स्क्रीन पर कुछ जानकारी प्रिंट करता है। मुझे इसे बदलने की अनुमति नहीं है। क्या स्क्रीन को प्रिंट करने के लिए स्ट्रिंग को "पकड़ने" का कोई तरीका है?जावा में स्क्रीन प्रिंट को पकड़ना

यह कंसोल पर प्रदर्शित होता है।

+0

यह इसे कैसे प्रिंट करता है? ग्राफिकल, या कंसोल करने के लिए? – aioobe

उत्तर

5

निकटतम चीज़ जो मैं साथ आ सकता हूं, System.out के माध्यम से मुद्रित सब कुछ पकड़ और अग्रेषित करना होगा।

setOut(java.io.PrintStream) विधि पर एक नज़र डालें।

एक पूरा उदाहरण होगा:

import java.io.PrintStream; 

public class Test { 

    public static void display() { 
     System.out.println("Displaying!"); 
    } 

    public static void main(String... args) throws Exception { 
     final List<String> outputLog = new ArrayList<String>(); 
     System.setOut(new PrintStream(System.out) { 
      public void println(String x) { 
       super.println(x); 
       outputLog.add(x); 
      } 

      // to "log" printf calls: 
      public PrintStream printf(String format, Object... args) { 
       outputLog.add(String.format(format, args)); 
       return this; 
      } 
     }); 

     display(); 
    } 
} 
+0

मैं इसे 'printf (स्ट्रिंग प्रारूप, स्ट्रिंग)' के साथ कैसे करूं? –

+0

उस विधि को ओवरराइड करें जिसे आप अवरुद्ध करना चाहते हैं। (जैसा कि println ऊपर से ऊपर है) – aioobe

+0

मेरा मतलब था, मैं मूल 'System.out' प्रारूप के बाद काम करने के बाद स्ट्रिंग कैसे प्राप्त करूं?)? –

2

मैं एक मानक प्रदर्शन() जावा में ऑपरेशन से परिचित नहीं हूँ, इस ढांचे आप के साथ काम कर रहे हैं के लिए अद्वितीय हो सकता है। क्या यह कंसोल पर प्रिंट करता है? एक संदेश बॉक्स प्रदर्शित करता है?

यदि आप प्रिंटआउट के बारे में बात कर रहे हैं जो कंसोल पर System.out.println() और System.err.println() से गुजरता है तो हाँ। आप मानक इनपुट और मानक आउटपुट को पुनर्निर्देशित कर सकते हैं। उपयोग:

System.setErr(debugStream); 
    System.setOut(debugStream); 

और उचित धाराओं (जैसे, फ़ाइलें) पैदा करते हैं।

संबंधित मुद्दे