2011-02-03 17 views
9

जावा में कौन सा कमांड आपको कमांड लाइन एप्लिकेशन में कंसोल साफ़ करने देगा?स्क्रीन को साफ़ करने के लिए जावा में कमांड

+2

कृपया स्पष्ट करें। क्या स्क्रीन? कंसोल? –

+2

किस तरह से स्क्रीन? –

उत्तर

8

यह अपने कंसोल पर निर्भर करता है लेकिन अगर यह ANSI escape sequences का समर्थन करता है, तो यह कोशिश ..

final static String ESC = "\033["; 
System.out.print(ESC + "2J"); 
+1

ऐसा कुछ शायद आपकी सबसे अच्छी शर्त है, क्योंकि मुझे नहीं लगता कि वास्तविक जावा समाधान (+1) –

+0

ठीक है धन्यवाद बीमार आपको बताता है कि यह – chriss

+0

काम करता है जो आपको किसी भी अन्य तरीके से काम नहीं करता – chriss

1

हमेशा स्पष्ट (और kludgy) नहीं है ..

int numRowsInConsole = 60; 
for (int ii=0; ii<numRowsInConsole; ii++) { 
    // scroll down one line 
    System.out.println(""); 
} 
2

एक स्क्रीन समाशोधन आम तौर पर की आवश्यकता है विशेष नियंत्रण अनुक्रम स्क्रीन/टर्मिनल के लिए विशिष्ट है जो आपका एप्लिकेशन चल रहा है। विकल्प:

  1. क्या आप जानते हैं आप हमेशा एक विशिष्ट टर्मिनल के तहत चल रहा होगा और कहा कि टर्मिनल, बस उत्पादन उन दृश्यों के लिए स्क्रीन स्पष्ट करने के लिए उचित नियंत्रण दृश्यों मिल पा रहा है। यदि आप हमें स्क्रीन बताते हैं, तो हम आपको अनुक्रम (संभवतः कुछ हद तक एएनएसआई/वीटी 100/वीटी -220-संगत) बता सकते हैं।

  2. बाहरी रूप से सुनिश्चित करें कि आपका ऐप हमेशा वांछित टर्मिनल में चलाया जाए, उदा। आपके ऐप को शुरू करने के लिए एक स्क्रिप्ट वांछित टर्मिनल में ऐप शुरू करती है। फिर स्क्रीन को साफ़ करने के लिए आवश्यक वर्ण अनुक्रम आउटपुट करें।

  3. टर्मिनल इम्यूलेशन लाइब्रेरी का उपयोग कर टर्मिनल पर नियंत्रण रखें, यानी आप ऐप अब एक विंडोिंग ऐप है जो उपयोगकर्ता के उपयोग के लिए टर्मिनल विंडो स्क्रीन बनाता है। फिर आप नियंत्रित करते हैं कि आप किस टर्मिनल को अनुकरण कर रहे हैं और जानेंगे कि नियंत्रण अनुक्रमों की क्या आवश्यकता है।

  4. टर्मिनल लाइब्रेरी का उपयोग करें (उदाहरण के लिए ऐतिहासिक curses लाइब्रेरी) जो टर्मिनल का पता लगाता है और इसकी सुविधाओं के लिए एक समान इंटरफ़ेस प्रदान करता है।

    What's a good Java, curses-like, library for terminal applications?

  5. नकली स्क्रीन पर लाइनों की एक गुच्छा लिख ​​कर यह: इस सवाल देखें।

3

भागो इस नमूने कार्यक्रम: यह दर्शाता है कि कैसे एक एस्केप अनुक्रम का उपयोग कर सांत्वना स्पष्ट और, स्थिति एक्स = 1 के लिए कर्सर का स्थान बदलने वाई = 1 करने के लिए।

मैंने कई लिनक्स टर्मिनल पर इसका परीक्षण किया। पता नहीं, अगर यह विंडोज के तहत काम करता है।
शायद आप मुझे बता सकते हैं;)

पढ़ें this article भागने दृश्यों के बारे में।

import java.io.*; 

public class Main { 

public static final char ESC = 27; 

public static void main(String[] args) 
     throws Exception { 
    Console c = System.console(); 
    if (c == null) { 
     System.err.println("no console"); 
     System.exit(1); 
    } 

    // clear screen only the first time 
    c.writer().print(ESC + "[2J"); 
    c.flush(); 
    Thread.sleep(200); 

    for (int i = 0; i < 100; ++i) { 
     // reposition the cursor to 1|1 
     c.writer().print(ESC + "[1;1H"); 
     c.flush(); 

     c.writer().println("hello " + i); 
     c.flush(); 

     Thread.sleep(200); 
    } 
} 

} 
+0

मुझे स्क्रिप्ट पसंद आया। अगर वहाँ सांत्वना साफ़ करने से पहले एक चर में सांत्वना के पाठ डाल करने के लिए एक रास्ता है मैं जानकारी देना चाहते हैं, और बाद में सांत्वना वापस राज्य यह पहले था बहाल? शायद 'buffer = System.out; ' ' System.out.print (ईएससी + "[1; 1 एच"); ' 'System.out.flush(); ' ' System.out.println ("Lorem ispum ...."); ' 'System.out.print (ESC +" [1; 1H "); ' 'System.out.flush(); ' ' System.out.println (बफर); ' – maan81

+0

क्षमा करें, बहु-पंक्ति टिप्पणी कैसे करें, यह नहीं पता था। – maan81

+0

@ maan81 दुख की बात है, सिस्टम स्टोर के "स्टोर" और "पुनर्स्थापित" करने का कोई तरीका नहीं है। यह सिर्फ एक धारा है।जावा की कंसोल क्षमताएं * बहुत * सीमित हैं। –

16

मुझे लगता है कि ओपी चाहता है कि स्क्रीन को साफ़ करना और कर्सर को घर की स्थिति में ले जाना है।

 final String ANSI_CLS = "\u001b[2J"; 
     final String ANSI_HOME = "\u001b[H"; 
     System.out.print(ANSI_CLS + ANSI_HOME); 
     System.out.flush(); 
+0

मेरे लिए ठीक काम करता है, धन्यवाद। – electrotype

-1

वहाँ दो बहुत ही सरल इस को हल करने के तरीके हैं, पहले जानवर बल विकल्प है:: कि कोशिश के लिए

for (int i=1; i<=10; i++) 
    System.out.println("\n"); 

इस के साथ समस्या यह तथापि, यह केवल छद्म स्क्रीन को साफ करता है वह यह है कि आप डेटा देखने के लिए स्क्रॉल कर सकते हैं, लेकिन डरो मत, एक और तरीका है!

System.out.println("\f"); 

वोला! यह चाल चलनी चाहिए, हालांकि स्क्रीन को साफ़ करने के बाद आपका कर्सर कंसोल की दूसरी पंक्ति पर स्थित होगा।

+1

क्या होगा अगर कंसोल लंबाई में दस लाइनों से बड़ा हो? –

+1

कई लाइनें जोड़ें – diegoaguilar

0
System.out.println("Hello!"); 

निर्दिष्ट स्ट्रिंग को प्रिंट करता है और फिर कर्सर को अगली पंक्ति में ले जाता है।

System.out.print("Hello!"); 

निर्दिष्ट स्ट्रिंग मुद्रित करता है और उस स्ट्रिंग के तुरंत बाद कर्सर को छोड़ देता है।

कंसोल की दूसरी पंक्ति पर कर्सर के ऊपर की पहचान की गई समस्या को हल करने के लिए के बजाय print का उपयोग करें।

0

मैंने इसे ब्लूजे में किया और यह पूरी तरह से काम किया: System.out.print ("\ f") का प्रयास करें; यह मेरे लिए काम कर रहा है बैश के लिए

0

समाशोधन:

System.out.print(String.format("\033[H\033[2J")); 
0

मेरी जानकारी के लिए Windows 10 के कमान विंडो cmd.exe देशी रूप अफवाहों के बावजूद एएनएसआई ESC दृश्यों का समर्थन नहीं करता। प्राप्त करने के लिए:

final String ANSI_CLS = "\u001b[2J"; 
System.out.print(ANSI_CLS); 

विधि कार्य आपको कमांड लाइन एमुलेटर की आवश्यकता है जो ANE का समर्थन करता है जैसे ConEmu64।

0

ऊपर से कोई भी समाधान आप के लिए काम करता है (मेरे मामले में) हैं, तो इस समाधान का प्रयास करें:

new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); 

मैं Windows 8 का उपयोग कर रहा हूँ और इस समाधान मेरे लिए काम किया। उम्मीद है कि यह आपके साथ भी करता है। :)

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