উত্তর:
যেহেতু এখানে বেশ কয়েকটি উত্তর উইন্ডোজের জন্য অ-কার্যকারী কোড দেখাচ্ছে তা এখানে একটি স্পষ্টতা রয়েছে:
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
।
এটির উপায় হ'ল একাধিক লাইনের প্রান্ত মুদ্রণ করা যেতে পারে ("print n") এবং পরিষ্কার স্ক্রিনটি অনুকরণ করতে পারে। শেষে পরিষ্কার, সর্বাধিক ইউনিক্স শেলের মধ্যে পূর্ববর্তী সামগ্রীগুলি সরিয়ে দেয় না, কেবল এটি সরিয়ে নিয়ে যায় এবং আপনি যদি নীচে স্ক্রোল তৈরি করেন তবে পূর্ববর্তী সামগ্রীটি দেখতে পাবেন।
এখানে একটি নমুনা কোড রয়েছে:
for (int i = 0; i < 50; ++i) System.out.println();
\r\n
একটি একক সঙ্গে println
, তার মাঝে একটি লক্ষণীয় বিলম্ব যেহেতু println
কল।
clear
হ'ল পরবর্তীকালে, নতুন আউটপুটটি পর্দার শীর্ষে থাকবে এবং নীচে নয়।
System.out.println(new String(new char[50]).replace("\0", "\r\n"));
কাজটি আরও দ্রুত এবং আরও ভাল করবে।
System.out.println(System.lineSeparator().repeat(50));
আপনি যদি আরও একটি সিস্টেম এটির স্বতন্ত্র পদ্ধতি চান তবে আপনি JLine লাইব্রেরি এবং কনসোলআরডার.ক্রিয়ারস স্ক্রিন () ব্যবহার করতে পারেন । বর্তমান পরিবেশে জেলাইন এবং এএনএসআই সমর্থিত কিনা এর বিচক্ষণ চেকটিও সম্ভবত মূল্যায়নের পক্ষে মূল্যবান।
নিম্নলিখিত কোডের মতো কিছু আমার জন্য কাজ করেছে:
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 + "'.");
}
}
}
এটি চলাকালীন, আপনি যদি প্রম্পটে 'ক্লিয়ার' টাইপ করেন তবে এটি স্ক্রিনটি সাফ করবে। নিশ্চিত হয়ে নিন যে আপনি এটিকে একটি সঠিক টার্মিনাল / কনসোল থেকে চালাচ্ছেন এবং Eclipse এ নয়।
আপনার ক্লাসে এই জাতীয় একটি পদ্ধতি তৈরি করুন: [যেমন @ হোলজার এখানে বলেছেন ]]
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
আমি আপনাকে এই পদ্ধতিটি ব্যবহার করার পরামর্শ দেব না।
রানটাইম.জেটআরুনটাইম ()। এক্সিকিউটিভ (ক্লাংস) আমার এক্সপি ল্যাপটপে কাজ করে নি। এটি করেছে -
for(int clear = 0; clear < 1000; clear++)
{
System.out.println("\b") ;
}
আশা করি এটি কার্যকর হবে
নিম্নলিখিত চেষ্টা করুন:
System.out.print("\033\143");
এটি লিনাক্স পরিবেশে সূক্ষ্মভাবে কাজ করবে
আপনি যদি ব্লুজ বা অন্য কোনও অনুরূপ সফ্টওয়্যার এ কাজ করে থাকেন তবে এটি কাজ করবে।
System.out.print('\u000C');
আপনি এর cls
সাথে
একটি অনুকরণ ব্যবহার করতে পারেনfor (int i = 0; i < 50; ++i) System.out.println();
ব্যাকস্ল্যাশ (\ বি) এবং ক্যারেজ রিটার্ন (\ r) হিসাবে আপনাকে নিয়ন্ত্রণের অক্ষর ব্যবহার করতে হবে। এটি ডিফল্টরূপে অক্ষম হয়ে আসে তবে কনসোল ভিউ এই নিয়ন্ত্রণগুলি ব্যাখ্যা করতে পারে।
উইন্ডোজ> অগ্রাধিকার এবং রান / ডিবাগ> কনসোল এবং এটি সক্ষম করতে ASCII নিয়ন্ত্রণ বৈশিষ্ট্য ব্যাখ্যা করুন নির্বাচন করুন
এই কনফিগারেশনের পরে, আপনি নিয়ন্ত্রণ ক্যারেক্টারগুলি সহ আপনার কনসোলটি পরিচালনা করতে পারেন:
- t - ট্যাব।
\ বি - ব্যাকস্পেস (একক অক্ষরের পাঠ্য বা মোছার পিছনে একটি পদক্ষেপ)।
। n - নতুন লাইন।
- r - গাড়ী ফেরত। ()
\ চ - ফর্ম ফিড।
আরও তথ্য এখানে: https://www.eclipse.org/eclipse/news/4.14/platform.php
আপনার জেএনআই ব্যবহার করা উচিত।
সবার আগে ভিজ্যুয়াল স্টুডিও ব্যবহার করে একটি .dll তৈরি করুন, সেই কল সিস্টেম ("ক্লাস") s এরপরে এই ডিডিএলটি ব্যবহার করতে জেএনআই ব্যবহার করুন।
আমি এই নিবন্ধটি দেখতে পেয়েছি যে চমৎকার:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2