runtime

Vasquez

Grünschnabel
Hallo.
Kann mir jemand bei meinem RunTime Problem helfen?
Ich hab den folgenden Code geschrieben, um unter Linux den Befehl zur Auflistung aller Dateien auszufuehren:


import java.io.*;

public class Test
{



public static void main(String[] args)
{
try {
Runtime rt = Runtime.getRuntime();
rt.exec(new String[]{"ls", "-al"});

} catch (Exception e) {
System.err.println(e.toString());
}
}

}


Irgendwie macht er aber gar nichts, es kommt keine Fehlermeldung noch eine Bestatigung.. lediglich der Prozess laeuft durch.
Weiss jemand was ich falsch mache? Ich nur, dass eine Console aufgerufen wird und dann der Befehl ausgefuehrt wird....

Danke schonmal!

MfG
Thomas
 
Du rufst zwar ls auf aber machst damit gar nichts. Wenn du
einen befehl fremdausführst wird std out automatisch darauf gelegt.
Sprich Java kennt die Ausgabe von ls aber nicht deine bash.
Runtime.exec() gibt dir ein Process Object zurück.
http://java.sun.com/j2se/1.3/docs/api/java/lang/Process.html

Dort gibts die Methoden:
abstract InputStream getErrorStream()
Gets the error stream of the subprocess.
abstract InputStream getInputStream()
Gets the input stream of the subprocess.
abstract OutputStream getOutputStream() ;

auf den OutputStream ist die Ausgabe von ls umgelenkt worden. Sprich
du musst diesen OutputStream an einen Writer deiner Wahl übergeben.

aber:
Sei mir nicht bös, aber wieso unter Java ein solchen Befehler pre Runtime aufrufen?
Mach dies mit Java Mitteln, ist schneller als über Runtime und vor allen Dingen
plattformunabhängig.
 
Zurück