Java Programmierung

Aus Physik
Wechseln zu: Navigation, Suche

Hints

Runtime.exec(...) und Leerzeichen

Mit Runtime.exec(...) können Konsolenbefehle aus Java heraus ausgeführt werden. Dafür stehen verschiedene Varianten dieser Funktion zur Verfügung:

Process exec(String   command)
Process exec(String   command,  String[] envp)
Process exec(String   command,  String[] envp, File dir)
Process exec(String[] cmdarray)
Process exec(String[] cmdarray, String[] envp)
Process exec(String[] cmdarray, String[] envp, File dir)

Kommen nun Pfade mit Leerzeichen in dem auszuführenden Befehl vor, so würde das auf der Konsole so aussehen:

$ cd ~/Eigene\ Dateien

Man kann auch nach Geschmack und OS Anführungszeichen drumherum setzen - auf jeden Fall kein Problem.

Übergibt man einen solchen String jedoch einer der ersten drei exec(...) Versionen, so funktioniert es nicht. Dies liegt daran, dass diese Funktionen den übergebenen String mit Tokenizern (unter denen sich auch ein Leerzeichen befindet) in ein String-Array umgewandelt, wodurch bei einem Leerzeichen abgetrennt wird, egal wie korrekt man den Pfad angibt.

Verwendet man die Funktionen mit String[] als ersten Parameter, tritt dieses Problem nicht auf.