Професионална програма
Loading...
+ Нов въпрос
Panglot avatar Panglot 22 Точки

Чистене на конзолата в Java?

Колеги и колежки усилено се опитвам да намеря някакъв метод или команда която да ми изчиства конзолата, но нямам успех. Ровя в интернет доста дълго време но намирам само предложения, които хвърлят exception когато се опитвам да ги използвам.
Някакви идеи как може да се чисти конзолата?
Моля без код от рода на:
for (int i =0;i<400;i++)
System.out.println(""); 
Не ми трябва да прилича все едно е изчистена а наистина да бъде.
Благодаря предаварително

Тагове:
0
Java Advanced
Vasilsk avatar Vasilsk 109 Точки
Best Answer

Колега, понеже ние в нашия тийм се сблъскахме със същия проблем ти предлагам нашето решение. Такава функция в конзолата на еклипс действително няма и какъвто и код да напишеш ще ти хвърля ексепшън. Нашата игра я подкарваме през конзолата на уиндоус. Там я компилираме и стартираме и там сме го направили така, че да се чисти. Това се прави по следния начин.

- В самия ти клас, там където искаш да се чисти(предлагам ти да го напишеш и в началото на програмата, за да изтрие всичко,което до сега си въвел в конзолата), пишеш следния код:

final String ANSI_CLS = "\u001b[2J";

final String ANSI_HOME = "\u001b[H";

System.out.print(ANSI_CLS + ANSI_HOME);

System.out.flush();

Това само по себе си кара конзолата да се изчисти, но в Еклипс хвърля ексепшън.

- Сигурно има и други външни терминали, които могат да се добавят и да се ползват, ние го направихме просто в конзолата на уиндоус. За жалост обаче тя по дифолт не чете ANSI и трябва да си го добавиш. Това се прави по следния начин:

От тук си сваляш ansicon, след това го разхивираш. След това даваш дясно копче върху My Computer -> Properties -> Advanced system settings -> Environment Variables -> в долния прозорец  System Variables търсиш променливата Path, избираш я и даваш Edit. След това в самия й край пишеш ";C:\Java Workspace\ansi166\x64" без кавичките, но остави точката и запетаята ако променливата Path няма накрая си такива. "C:\Java Workspace\ansi166\x64" е мястото където аз съм си разхивирал папката ansi166, при теб сигурно ще е на друго място, затова го промени. Съответно папката х64 е ако си с 64 битов уиндоус, а другата папка е ако си с 32 битов.  

След това подкарваш проекта ти през конзолата и би трябвало да работи.

Успех !

1
hristolilov avatar hristolilov 394 Точки

Такава функция за вградената конзола в JAVA няма.

Трябва да се работи с външни конзоли/прозорци.

За играта, която правим вмомента, ползваме java.awt, но има и много други ;)

0
kiko144 avatar kiko144 795 Точки

Не знам какво точно искаш да правиш и със какво IDE си , но в еклипс има опция на вградената конзола Right click>clear. За вграден метод мисля че няма. 

1
aslv1 avatar aslv1 304 Точки
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");
    }
  }
    // Handle any exceptions.
  }
}
0
Vasilsk avatar Vasilsk 109 Точки

Това много рядко работи, особено на уиндоус, но нека пробва колегата, може да има късмет :)

0
Panglot avatar Panglot 22 Точки

Интересно. И тук получавам същите отговори.
Благодаря за отговорите ще опитам с външни библиотеки най-вероятно, ако опре до оправяне. Работата вече е свършена с гламавият начин, който казах, че не търся. Останалите начини с exec не стават. На всичките опити с него които опитах ми дава Exception при run-ване на кода.
Малко пояснение ако някой има други идеи. Търся МЕТОД който да чисти конзолата. Ръчното изчистване от еклипса не ми върши работа. Операционната ми система е Windows 7 Ultimate SP 1. 

0
Vasilsk avatar Vasilsk 109 Точки

Колега, не знам какво очакваш от нас, някой да пренапише еклипс ли ? Такъв метод има, но той не рънва в конзолата на еклипс, както ти написах по-нагоре. Ако искаш да си чистиш конзолата трябва или да ползваш външна такава, която да си импортнеш, или тази на уиндоуса, по описания от мен начин.

0
Panglot avatar Panglot 22 Точки
Не очаквам нещо конкретно, колега. Просто подхвърлям въпрос и ако някой има идея отговаря. Разбрах твоят начин, но може да има и други идеи. Благодаря за помощта, но не приемай въпроса лично към теб. Най-вероятно ще пробвам твоят начин ако реша да го оправя, но могат да изскочат и други идеи :).
0