2010-08-03 22 views
2

J'ai une méthode comme ce qui suit:Java - Comment donner un tableau méthode

public void launch(String cmd, String [] args, String workingDir) 

Dans cette méthode que j'appelle ProcessBuilder.

Comment appeler ProcessBuilder en incluant un nombre arbitraire d'arguments inclus dans mon paramètre args?

Par ex, quelque chose comme ceci:

ProcessBuilder pb = new ProcessBuilder(cmd, args); 

Je remarque que ProcessBuilder ce ne contructor:

ProcessBuilder(List<String> command) 

Peut-être que je pourrais l'utiliser en quelque sorte.

+0

Oui, vous pouvez utiliser ce constructeur comme l'a démontré dans les réponses ci-dessous. Vous pouvez définir le répertoire de travail passé avec ProcessBuilder.directory(). En outre, un point d'accès qui frappe beaucoup de nouveaux utilisateurs de ProcessBuilder est la nécessité de consommer les flux de sortie et d'erreur du processus. Voir Process.getInputStream() et Process.getErrorStream(). –

Répondre

7

ProcessBuilder a un constructeur varargs - ProcessBuilder(String... command) - vous pouvez donc l'utiliser, mais vous aurez besoin de faire votre commande et vos arguments dans un seul tableau.

Sinon, vous pouvez utiliser l'autre constructeur comme suit:

List<String> list = new ArrayList<String>(args.length + 1); 
list.add(cmd) 
list.addAll(Arrays.asList(args)); 
ProcessBuilder pb = new ProcessBuilder(list); 
7

Que diriez-vous:

public static void launch(String cmd, String[] args, String workingDir) { 
    List<String> strArgs = new ArrayList<String>(); 
    strArgs.add(cmd); 
    strArgs.addAll(Arrays.asList(args)); 
    ProcessBuilder pb = new ProcessBuilder(strArgs); 
}