OVH Cloud OVH Cloud

pb avec Runtime.getRuntime().exec()

4 réponses
Avatar
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...

4 réponses

Avatar
Olivier Demaine
et si tu essai avec exec("cmd /C " + ta commande) ?


"Vincent" a écrit dans le message de news:

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


Avatar
captainpaf
Le Thu, 07 Aug 2003 11:53:45 +0200, Tom a


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

Avatar
Tom


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

Avatar
vclassine
Tom wrote in message news:<bgt7jc$otv$...
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...