GNT sans publicité, site mobile, fonctionnalitées exclusives...

pb avec Runtime.getRuntime().exec()

Le
vclassine
Bonjour à tous,

J'ai un problème avec le code (pourtant simple) ci-dessous:

public static void main(String[] args)
{
Process p;
try
{
String[] command = {"copy","C:" + File.separator +
"test.asp","C:" + File.separator + "copyoftest.asp"};
p = Runtime.getRuntime().exec(command);
}
catch(java.io.IOException ioe)
{
ioe.printStackTrace();
}
}

A l'execution ça donne ça:

java.io.IOException: CreateProcess: copy C:\test.asp C:\copyoftest.asp
error=2
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process.<init>(Win32Process.java:63)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:550)
at java.lang.Runtime.exec(Runtime.java:475)
at java.lang.Runtime.exec(Runtime.java:441)
at CommandExecutor.main(CommandExecutor.java:28)

J'ai déjà utilisé Runtime.getRuntime().exec(), mais je n'ai
jamais vu ça
Lire les 4 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Demaine
Le #416548
et si tu essai avec exec("cmd /C " + ta commande) ?


"Vincent"
Bonjour à tous,

J'ai un problème avec le code (pourtant simple) ci-dessous:

public static void main(String[] args)
{
Process p;
try
{
String[] command = {"copy","C:" + File.separator +
"test.asp","C:" + File.separator + "copyoftest.asp"};
p = Runtime.getRuntime().exec(command);
}
catch(java.io.IOException ioe)
{
ioe.printStackTrace();
}
}

A l'execution ça donne ça:

java.io.IOException: CreateProcess: copy C:test.asp C:copyoftest.asp
error=2
at java.lang.Win32Process.create(Native Method)
at java.lang.Win32Process. at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:550)
at java.lang.Runtime.exec(Runtime.java:475)
at java.lang.Runtime.exec(Runtime.java:441)
at CommandExecutor.main(CommandExecutor.java:28)

J'ai déjà utilisé Runtime.getRuntime().exec(...), mais je n'ai
jamais vu ça...


captainpaf
Le #416546
Le Thu, 07 Aug 2003 11:53:45 +0200, Tom

Tu as essayé en doublant les anti-slashs pour avoir une ligne de
commande du style "copy C:\test.asp C:\copyoftest.asp"... Car c'est
tjrs le même pb avec Merdows : les anti-slashs seuls sont normalement
utilisés pour des caractères spéciaux (z'ont été stupides les
développeurs de Krosoft qd ils ont choisi comme séparateur...
Heureusement que sous Unix/Linux, il y a des personnes qui, elles,
pensent)...



Tu rigoles là ? Si tu regardes son code, tu verras qu'il a utilisé
File.separator ce qui me semble plus que judicieux comme manière de
procéder. Donc pas besoin de bidouiller en doublant les anti slashs...

Tom
Le #416544


Tu rigoles là ? Si tu regardes son code, tu verras qu'il a utilisé
File.separator ce qui me semble plus que judicieux comme manière de
procéder. Donc pas besoin de bidouiller en doublant les anti slashs...



non, j'avais vu, mais j'ai eu tellement de pbs avec ces noms de chemin à
la c.. (même en utilisant File.separator) que je pensais (à tord pe) que
le pb venait de là...

Tom

vclassine
Le #416594
Tom
Tu as essayé en doublant les anti-slashs pour avoir une ligne de
commande du style "copy C:\test.asp C:\copyoftest.asp"...
en fait normalement File.separator gère bien les choses... Mais même

en doublant le File.separator ça fait la même chose (à part que la
commande afficher dans le message d'erreur à des double anti-slashs).


NB : Prkoi utilises-tu une exécution système pour faire une copie ?
Essaies plutôt de te faire ta propre méthode de copie 100% pure Java (ça
a l'avantage d'être portable...)
En fait parce que c'est forcément sous windows et que la copie système

sera certainement plus rapide qu'une fonction de copie basique... Et
comme il s'agit de fichiers pouvant aller jusqu'à qq centaines de
mega...

Publicité
Suivre les réponses
Poster une réponse
Anonyme