|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2011
Messaggi: 4
|
[Java] lanciare comando dos da classe e catturare l'output
Ciao a tutti, sto combattendo da ieri con una situazione molto semplice ma che mi sta dando problemi... dunque, ho bisogno che da una classe java mi venga aperta una finestra di comando e mi venga eseguito un programmino esterno, nel mio caso dlv.
A dlv devo passare un file che verrà eseguito e per cui io voglio registrare l'output su un file. Mettendo momentaneamente da parte la classe Java, se io apro la shell, vado in c, ed eseguo il seguente comando: dlv.exe prova.txt il risultato è questo: Codice:
{q1("Miller",38000,"New York"), q1("Koch",2000000,"Atlanta"), q1("Nguyen",35000,
"New York"), q1("Gruber",32000,"Atlanta"), q1b("Miller",38000,"New York"), q1b("
Koch",2000000,"Atlanta"), q1b("Nguyen",35000,"New York"), q1b("Gruber",32000,"At
lanta")}
Codice:
String command = "cmd /c start dlv.exe -nofacts prova.txt ";
Runtime run= Runtime.getRuntime();
File fpath;
try {
fpath = new File( "C:");
Process processo = run.exec(command , null, fpath);
String line = "";
BufferedReader input = new BufferedReader(new InputStreamReader(processo.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
PS. dimenticavo di dirvi che quando lancio la classe java, la shell viene aperta ma si richiude in un secondo automaticamente. Grazie a tutti ! |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Dec 2007
Messaggi: 10
|
Prova ad aggiungere alla fine della stringa del tuo comando "&& pause" e controlla cosa succede.
Un'altra possibile soluzione è redirezionare l'output della shell direttamente su file e poi leggere quello. Puoi farlo aggiungendo, sempre alla fine della tua stringa, "> nomefile.txt".
__________________
If my memory of her has an expiration date, let it be 10000 years. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:30.



















