Newsgroup: it.comp.java
Titolo: Funzione clear screen (cls - clear)

Salve a tutti,
ho cercato lungamente in internet e soprattutto sul sito della SUN,
l'esistenza di questa funzione in JAVA ma a quanto pare, in questo
linguaggio la SUN non ha mai ritenuto fosse necessario implementarlo.
Comunque dopo lunghe ricerche, la soluzione più promettente che ho trovato è
realizzata dalla seguente porzione di codice:
      try {
         if( System.getProperty( "
os.name
" ).startsWith( "Wind" ) )
            clearScreenCommand = "cls";
         else
            clearScreenCommand = "clear";
         Runtime.getRuntime().exec( clearScreenCommand );
      } catch (Exception e) {
         System.out.println("Clear Screen non eseguito!");
      }
Il problema è che per qualche motivo, il comando non viene mai eseguito e
viene sollevata sempre la relativa eccezione.
Chiedo quindi a tutti voi se siete a conoscenza di un modo per implementare
questa antica ma sempre utile funzione che è invece presente in altri
linguaggi di programmazione.
Ringrazio anticipatamente tutti coloro che risponderanno.
Ciao.


http://csvtosql.sf.net

 farsi stampare il trace mi sembra il minimo ...
Ecco quì la stamapa della variabile "e" che contiene il messaggio di errore:
java.io.IOException: CreateProcess: cls error=2
Qualcuno sa come risolvere questo problema? Grazie anticipato per ogni aiuto
che saprete fornirmi.
Ciao.

abcdef wrote:

guarda qui
http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html
e in particolare:
As stated earlier, the error value of 2 means "file not found," which, in
this case, means that the executable named dir.exe could not be found.
That's because the directory command is part of the Windows command
interpreter and not a separate executable. To run the Windows command
interpreter, execute either 
command.com
 or cmd.exe, depending on the
Windows operating system you use. Listing 4.5 runs a copy of the Windows
command interpreter and then executes the user-supplied command (e.g.,
dir).


 dir).
Innanzitutto grazie per la risposta.
Ho guardato il link e devo dire che è stato molto utile e interessante. Non
mi sono chiarissimi tutti i punti però a grandi linee ho afferrato qualche
concetto e gli esempi sono stati di enorme aiuto in questo. Proprio dagli
esempi sono partito con le mie prove e alla fine devo dire che tutto
funziona correttamente ma, se uso come nell'esempio il comando "dir".
Mettendo il comando "cls", invece di ottenere la cancellazione dello schermo
ottengo sempre il messaggio di output che segue:
Execing cmd.exe /C cls
OUTPUT>?
ExitValue: 0
Il comando è correttamente eseguito ed è confermato dal valore 0 della
variabile ExitValue, è però l'effetto "che è sbagliato". Magari dico una
fesseria però credo sia un problema di ridirezione dell'output del comando i
cui effetti devono essere applicati alla consoll e non dati in output
tramite le due seguenti righe di codice:
         StreamGobbler outputGobbler = new
         StreamGobbler(proc.getInputStream(), "OUTPUT");
che a loro volta richiamano le seguenti righe del metodo RUN di
StreamGobbler:
         while ( (line = br.readLine()) != null)
         System.out.println(type + ">" + line);
Ringraziandoti per tutto il prezioso aiuto finora prestatomi, spero tu possa
aiutarmi anche in questo nuovo piccolo problema che è ora sorto, ovviamente
nel frattempo proverò a trovare da solo una possibile soluzione.
Ciao e buona giornata.