Java Programmierung
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.