जवाबों:
चूंकि विंडोज के लिए गैर-कार्य कोड दिखाते हुए यहां कई उत्तर हैं, इसलिए यहां एक स्पष्टीकरण है:
Runtime.getRuntime().exec("cls");
यह कमांड काम नहीं करता है, दो कारणों से:
कोई निष्पादन योग्य नाम नहीं है cls.exe
या cls.com
एक मानक विंडोज इंस्टॉलेशन में जिसके माध्यम से लागू किया जा सकता है Runtime.exec
, जैसा कि प्रसिद्ध कमांड cls
विंडोज के कमांड लाइन दुभाषिया में बनाया गया है।
के माध्यम से एक नई प्रक्रिया शुरू करते समय Runtime.exec
, मानक आउटपुट एक पाइप पर पुनर्निर्देशित हो जाता है, जिसे आरंभ करने वाली जावा प्रक्रिया पढ़ सकती है। लेकिन जब cls
कमांड का आउटपुट रीडायरेक्ट हो जाता है, तो यह कंसोल को क्लियर नहीं करता है।
इस समस्या को हल करने के लिए, हमें कमांड लाइन दुभाषिया ( cmd
) को लागू करना होगा और इसे एक कमांड निष्पादित करने के लिए कहना होगा ( /c cls
) जो अंतर्निहित कमांड को लागू करने की अनुमति देता है। इसके अलावा, हमें इसके आउटपुट चैनल को सीधे जावा प्रोसेस के आउटपुट चैनल से जोड़ना होगा, जो कि जावा 7 के साथ काम करना शुरू कर देता है inheritIO()
:
import java.io.IOException;
public class CLS {
public static void main(String... arg) throws IOException, InterruptedException {
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
}
}
अब जब जावा प्रक्रिया कंसोल से जुड़ी होती है, अर्थात आउटपुट पुनर्निर्देशन के बिना कमांड लाइन से शुरू की गई है, तो यह कंसोल को साफ कर देगी।
कमांड लाइन कंसोल को क्लियर करने के लिए आप निम्न कोड का उपयोग कर सकते हैं:
public static void clearScreen() {
System.out.print("\033[H\033[2J");
System.out.flush();
}
अधिक संदर्भ के लिए देखें: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
यह है कि मैं इसे कैसे संभालूंगा। यह विधि विंडोज ओएस केस और लिनक्स / यूनिक्स ओएस केस के लिए काम करेगी (जिसका अर्थ है कि यह मैक ओएस एक्स के लिए भी काम करता है)।
public final static void clearConsole()
{
try
{
final String os = System.getProperty("os.name");
if (os.contains("Windows"))
{
Runtime.getRuntime().exec("cls");
}
else
{
Runtime.getRuntime().exec("clear");
}
}
catch (final Exception e)
{
// Handle any exceptions.
}
}
ध्यान दें कि यह विधि आम तौर पर कंसोल को साफ नहीं करेगी यदि आप आईडीई के अंदर चल रहे हैं।
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
विंडोज में कोई निष्पादन योग्य नहीं है । यह एक आंतरिक आदेश है cmd.exe
।
इसे प्राप्त करने का एक तरीका लाइनों के कई छोरों ("\ n") को प्रिंट कर सकता है और स्पष्ट स्क्रीन का अनुकरण कर सकता है। सबसे अंत में, यूनिक्स खोल में, पिछली सामग्री को नहीं हटाता है, केवल इसे ऊपर ले जाता है और यदि आप स्क्रॉल करते हैं तो पिछली सामग्री को देख सकते हैं।
यहाँ एक नमूना कोड है:
for (int i = 0; i < 50; ++i) System.out.println();
\r\n
साथ 50 के एक स्ट्रिंग को प्रिंट करना है println
, क्योंकि println
कॉल के बीच ध्यान देने योग्य देरी है।
clear
है कि उत्तरार्द्ध में, नया आउटपुट स्क्रीन के शीर्ष पर होगा और नीचे नहीं।
System.out.println(new String(new char[50]).replace("\0", "\r\n"));
तेजी से और बेहतर काम करेंगे।
System.out.println(System.lineSeparator().repeat(50));
यदि आप ऐसा करने के लिए अधिक स्वतंत्र सिस्टम चाहते हैं, तो आप JLine लाइब्रेरी और ConsoleReader.clearScreen () का उपयोग कर सकते हैं । वर्तमान परिवेश में JLine और ANSI का समर्थन किया गया है या नहीं, इसकी स्पष्ट जाँच ।
निम्नलिखित कोड की तरह कुछ मेरे लिए काम किया:
import jline.console.ConsoleReader;
public class JLineTest
{
public static void main(String... args)
throws Exception
{
ConsoleReader r = new ConsoleReader();
while (true)
{
r.println("Good morning");
r.flush();
String input = r.readLine("prompt>");
if ("clear".equals(input))
r.clearScreen();
else if ("exit".equals(input))
return;
else
System.out.println("You typed '" + input + "'.");
}
}
}
इसे चलाते समय, यदि आप प्रॉम्प्ट पर 'स्पष्ट' टाइप करते हैं, तो इससे स्क्रीन साफ हो जाएगी। सुनिश्चित करें कि आप इसे एक उचित टर्मिनल / कंसोल से चलाते हैं, न कि ग्रहण में।
अपनी कक्षा में इस तरह से एक विधि बनाएँ: [जैसा कि @Holger ने यहां कहा ।]
public static void clrscr(){
//Clears Screen in java
try {
if (System.getProperty("os.name").contains("Windows"))
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
else
Runtime.getRuntime().exec("clear");
} catch (IOException | InterruptedException ex) {}
}
यह विंडोज़ के लिए कम से कम काम करता है, मैंने अभी तक लिनक्स के लिए जाँच नहीं की है। अगर कोई इसे लिनक्स के लिए जाँचता है तो कृपया मुझे बताएं कि यह काम करता है (या नहीं)।
एक वैकल्पिक विधि के रूप में इस कोड को clrscr()
निम्न में लिखना है :
for(int i = 0; i < 80*300; i++) // Default Height of cmd is 300 and Default width is 80
System.out.print("\b"); // Prints a backspace
मैं आपको इस विधि का उपयोग करने की सलाह नहीं दूंगा।
Runtime.getRuntime ()। Exec (cls) ने मेरे XP लैपटॉप पर काम नहीं किया। यह किया -
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
आशा है कि यह उपयोगी है
निम्नलिखित आज़माएँ:
System.out.print("\033\143");
यह लिनक्स वातावरण में ठीक काम करेगा
यदि आप ब्लूज या किसी अन्य समान सॉफ्टवेयर में ऐसा कर रहे हैं तो यह काम करेगा।
System.out.print('\u000C');
आपको बैकस्लैश (\ b) और कैरिज रिटर्न (\ r) के रूप में नियंत्रण वर्णों का उपयोग करने की आवश्यकता है। यह डिफ़ॉल्ट रूप से अक्षम हो जाता है, लेकिन कंसोल दृश्य इन नियंत्रणों की व्याख्या कर सकता है।
विंडोज> प्राथमिकताएं और रन / डिबग> कंसोल और इसे सक्षम करने के लिए इंटरसेप्ट ASCII नियंत्रण वर्णों का चयन करें
इन कॉन्फ़िगरेशन के बाद, आप अपने कंसोल को नियंत्रण वर्णों जैसे प्रबंधित कर सकते हैं:
\ t - टैब।
\ b - बैकस्पेस (पाठ में एक कदम पीछे या किसी एकल वर्ण को हटाने)।
\ n - नई पंक्ति।
\ r - गाड़ी वापसी। ()
\ f - फ़ॉर्म फ़ीड।
अधिक जानकारी: https://www.eclipse.org/eclipse/news/4.14/platform.php पर
आपको जेएनआई का उपयोग करने की आवश्यकता है।
सबसे पहले उपयोग दृश्य स्टूडियो का उपयोग कर एक .dll, कि कॉल सिस्टम ("cls") बनाएँ। उसके बाद इस डीडीएल का उपयोग करने के लिए जेएनआई का उपयोग करें।
मुझे यह लेख अच्छा लगा।
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2