2013-05-02 1 views
0

Je veux attendre jusqu'à ce que ma commande batch termine son exécution et crée un fichier csv comme hors put.the le code est comme ci-dessous pour excecuting fichier batchcomment attendre pour la commande de lot pour compléter son excecution en java

String command = "cmd /c start " + batFile; 
     Runtime rt = Runtime.getRuntime(); 
     Process pr = rt.exec(command); 

Ensuite, je veux utiliser le fichier CSV (app.csv) pour en lire le contenu. Mais quand je cours le programme je reçois comme.

java.io.FileNotFoundException: C:\appanalysis\app.csv (The system cannot find the file specified) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:120) 
    at java.io.FileInputStream.<init>(FileInputStream.java:79) 
    at java.io.FileReader.<init>(FileReader.java:41) 

Comment résoudre ce

+0

Check http://stackoverflow.com/questions/15199119/runtime-exec-waitfor-doesnt-wait-until-process-is-done – JRR

Répondre

1

Essayez pr.waitFor cette méthode renverra le code de sortie, tout autre que 0 le processus a échoué.

Insted de String command = "cmd /c start " + batFile; utiliser String command = "cmd /c " + batFile

+0

ya je l'ai utilisé, mais obtenir même fichier introuvable pour ma première exécution – shravani

+0

Le fichier batch crée-t-il le fichier CSV? –

+0

ya il crée le fichier de csv à mon répertoire local .... ainsi mes ordres de programme immédiatement après le processus pr = rt.exec (commande); int exitVal = pr.waitFor(); est d'utiliser le fichier CSV pour l'analyse. Mais obtenir le fichier introuvable – shravani

0

Runtime.exec retourne un objet Process (pr, dans votre exemple ci-dessus). Appelez simplement pr.waitFor() pour attendre la fin du processus.

Questions connexes