Como existem várias respostas aqui mostrando o código que não funciona para Windows, aqui está um esclarecimento:
Runtime.getRuntime().exec("cls");
Este comando não funciona, por dois motivos:
Não há executável nomeado cls.exeou cls.comem uma instalação padrão do Windows que possa ser chamada Runtime.exec, pois o comando conhecido clsé incorporado ao interpretador de linha de comando do Windows.
Ao iniciar um novo processo Runtime.exec, a saída padrão é redirecionada para um canal que o processo Java inicial pode ler. Mas quando a saída do clscomando é redirecionada, ela não limpa o console.
Para resolver esse problema, precisamos chamar o interpretador de linha de comando ( cmd) e solicitar que ele execute um comando ( /c cls) que permita chamar comandos internos. Além disso, temos que conectar diretamente seu canal de saída ao canal de saída do processo Java, que funciona a partir do Java 7, usando inheritIO():
Agora, quando o processo Java estiver conectado a um console, ou seja, foi iniciado a partir de uma linha de comandos sem redirecionamento de saída, ele limpará o console.
@jdurston omitindo home não redefinirá o cursor de volta ao topo da janela.
Hugo Zink
1
Não funciona no Eclipse, mas funciona no terminal Linux. Um voto para você
Anh Tuan
7
Isso funciona apenas se o emulador de terminal no qual o Java é executado, suportar códigos de escape ANSI. Windows NT / XP / 7/8/10 CMD não
Thorbjørn Ravn Andersen
19
É assim que eu lidaria com isso. Esse método funcionará para os casos do sistema operacional Windows e Linux / Unix OS (o que significa que também funciona para o Mac OS X).
publicfinalstaticvoid clearConsole(){try{finalString os =System.getProperty("os.name");if(os.contains("Windows")){Runtime.getRuntime().exec("cls");}else{Runtime.getRuntime().exec("clear");}}catch(finalException e){// Handle any exceptions.}}
Observe que esse método geralmente não limpará o console se você estiver executando dentro de um IDE.
No Windows 8.1:java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
Ben Leggiero 21/10
1
@BenLeggiero Esse erro ocorre se, por algum motivo, o comando cls não for encontrado pela JVM em algum diretório da variável de ambiente PATH. Tudo o que esse código faz é chamar o comando do sistema Windows ou Unix com base na configuração padrão do sistema para limpar o prompt de comando ou a janela do terminal, respectivamente. Deve ser exatamente o mesmo que abrir uma janela do terminal e digitar "cls" seguido da tecla Enter.
Dyndrilliac
22
Não há clsexecutável no Windows. É um comando interno de cmd.exe.
a_horse_with_no_name
7
Como já foi dito por outros, não funciona , não apenas porque o Windows não possui cls executáveis, mas também porque a saída de subprocessos é redirecionada.
Uma maneira de obter isso pode ser imprimir várias final de linhas ("\ n") e simular a tela limpa. No final, claro, no máximo no shell unix, não remove o conteúdo anterior, apenas o move para cima e, se você rolar para baixo, poderá ver o conteúdo anterior.
Uma maneira mais rápida de fazer isso é imprimir uma única sequência de 50 \r\ncom uma única println, pois há um atraso perceptível entre as printlnchamadas.
Ben Leggiero 22/10
7
Como você sabe quantas linhas o console está configurado para exibir? Pode funcionar na maioria dos casos, mas não em todos.
Cypher
4
A maior diferença entre isso e o adequado clearé que, no último, a nova saída estará na parte superior da tela e não na parte inferior.
Ndm13 12/07/16
5
System.out.println(new String(new char[50]).replace("\0", "\r\n"));fará o trabalho mais rápido e melhor.
Aaron Esau
1
@AaronEsau, começando com JDK 11, você pode usarSystem.out.println(System.lineSeparator().repeat(50));
Ao executar isso, se você digitar 'clear' no prompt, a tela será limpa. Certifique-se de executá-lo a partir de um terminal / console adequado e não no Eclipse.
É apenas uma dica, talvez alguém queira limpar a tela, na verdade
Sarz
@Sarz: e, na verdade, "limpar a tela" não faz sentido próprio, por si só, seja
Gyom
0
Você precisa usar caracteres de controle como barra invertida (\ b) e retorno de carro (\ r). Ele é desativado por padrão, mas a exibição do console pode interpretar esses controles.
Windows> Preferências e Executar / Depurar> Console e selecione Interpretar caracteres de controle ASCII para ativá-lo
Após essas configurações, você pode gerenciar seu console com caracteres de controle como:
guia \ t.
\ b - backspace (um passo atrás no texto ou exclusão de um único caractere).
Respostas:
Como existem várias respostas aqui mostrando o código que não funciona para Windows, aqui está um esclarecimento:
Este comando não funciona, por dois motivos:
Não há executável nomeado
cls.exe
oucls.com
em uma instalação padrão do Windows que possa ser chamadaRuntime.exec
, pois o comando conhecidocls
é incorporado ao interpretador de linha de comando do Windows.Ao iniciar um novo processo
Runtime.exec
, a saída padrão é redirecionada para um canal que o processo Java inicial pode ler. Mas quando a saída docls
comando é redirecionada, ela não limpa o console.Para resolver esse problema, precisamos chamar o interpretador de linha de comando (
cmd
) e solicitar que ele execute um comando (/c cls
) que permita chamar comandos internos. Além disso, temos que conectar diretamente seu canal de saída ao canal de saída do processo Java, que funciona a partir do Java 7, usandoinheritIO()
:Agora, quando o processo Java estiver conectado a um console, ou seja, foi iniciado a partir de uma linha de comandos sem redirecionamento de saída, ele limpará o console.
fonte
Você pode usar o seguinte código para limpar o console da linha de comandos:
Para mais referências, visite: http://techno-terminal.blogspot.in/2014/12/clear-command-line-console-and-bold.html
fonte
É assim que eu lidaria com isso. Esse método funcionará para os casos do sistema operacional Windows e Linux / Unix OS (o que significa que também funciona para o Mac OS X).
Observe que esse método geralmente não limpará o console se você estiver executando dentro de um IDE.
fonte
java.io.IOException: Cannot run program "cls": CreateProcess error=2, The system cannot find the file specified
cls
executável no Windows. É um comando interno decmd.exe
.Uma maneira de obter isso pode ser imprimir várias final de linhas ("\ n") e simular a tela limpa. No final, claro, no máximo no shell unix, não remove o conteúdo anterior, apenas o move para cima e, se você rolar para baixo, poderá ver o conteúdo anterior.
Aqui está um código de exemplo:
fonte
\r\n
com uma únicaprintln
, pois há um atraso perceptível entre asprintln
chamadas.clear
é que, no último, a nova saída estará na parte superior da tela e não na parte inferior.System.out.println(new String(new char[50]).replace("\0", "\r\n"));
fará o trabalho mais rápido e melhor.System.out.println(System.lineSeparator().repeat(50));
Se você quiser uma maneira independente sistema mais de fazer isso, você pode usar o JLine biblioteca e ConsoleReader.clearScreen () . Provavelmente, também vale a pena verificar se JLine e ANSI são suportados no ambiente atual.
Algo como o seguinte código funcionou para mim:
Ao executar isso, se você digitar 'clear' no prompt, a tela será limpa. Certifique-se de executá-lo a partir de um terminal / console adequado e não no Eclipse.
fonte
Crie um método em sua classe como este: [como @Holger disse aqui .]
Isso funciona para o Windows, pelo menos, eu não verifiquei o Linux até agora. Se alguém verificar o Linux, informe-me se funciona (ou não).
Como método alternativo é escrever este código em
clrscr()
:Não vou recomendar que você use esse método.
fonte
Runtime.getRuntime (). Exec (cls) NÃO funcionou no meu laptop XP. Isso fez -
Espero que isso seja útil
fonte
Tente o seguinte:
Isso funcionará bem no ambiente Linux
fonte
Isso funcionará se você estiver fazendo isso no Bluej ou em qualquer outro software similar.
fonte
Você pode usar uma emulação de
cls
comfor (int i = 0; i < 50; ++i) System.out.println();
fonte
Você precisa usar caracteres de controle como barra invertida (\ b) e retorno de carro (\ r). Ele é desativado por padrão, mas a exibição do console pode interpretar esses controles.
Windows> Preferências e Executar / Depurar> Console e selecione Interpretar caracteres de controle ASCII para ativá-lo
Após essas configurações, você pode gerenciar seu console com caracteres de controle como:
guia \ t.
\ b - backspace (um passo atrás no texto ou exclusão de um único caractere).
\ n - nova linha.
retorno de carro. ()
\ f - forma o feed.
Mais informações em: https://www.eclipse.org/eclipse/news/4.14/platform.php
fonte
Você precisa usar o JNI.
Primeiro de tudo, crie um .dll usando o visual studio, esse sistema de chamada ("cls"). Depois disso, use JNI para usar este DDL.
Eu encontrei este artigo que é bom:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=5170&lngWId=2
fonte