Dies ist eine Linux-Maschine und der folgende Code führt zu keiner Ausgabe, ich bin neugierig, warum. P.S. - Ich habe nicht gelesen, dass die Tilde entkoppelt werden muss, aber in jedem Fall wurde die Tilde mit einem Backslash entfernt und javac hat auf den Syntaxfehler hingewiesen.Runtime.getRuntime(). Exec ("ls ~") listet nicht den Inhalt des Home-Verzeichnisses
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
class Run {
public static void main(String args[]) throws IOException {
Process p = Runtime.getRuntime().exec("ls ~");
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
'~' von der Shell interpoliert wird. – chrylis
'Process Prozess = Runtime.getRuntime(). Exec (neue String [] {"/bin/sh "," -c "," ls ~ "});' um Ihre Shell aufzurufen und erweitern Sie die '~' vor dem Passieren es zu 'ls'. – teppic
Siehe auch [Wenn Runtime.exec() nicht wird] (http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html) für viele gut Tipps zum korrekten Erstellen und Bearbeiten eines Prozesses. Dann ignoriere es auf 'exec' und verwende einen' ProcessBuilder' um den Prozess zu erstellen. Unterteilen Sie auch einen 'String arg' in' String [] args', um Dinge wie Pfade mit Leerzeichen zu berücksichtigen. –