Bonjour,
Mon problème semble simple mais bon...
En fait je veux récupérer le résultat de la commande linux cksum sur un fichier.
D'abord je voulais récupérer directement le résultat de ma commande système exécutée depuis java, mais je n'ai pas trouvé comment faire
-> 1ere question : est-ce que c'est possible?
Ensuite je me suis dis, c'est pas grave, tu rediriger la sortie dans un fichier que tu vas ensuite lire.
Donc j'écris une petite classe de test que vous pouvez trouver après, et je teste. Le résultat n'est pas probant puisque le fichier de sortie n'est pas créé par l'exécution de ma commande.
J'ai regardé et testé les différentes méthodes pour exécuter une commande, mais j'ai du mal à vraiment comprendre comment elles fonctionnent...
Donc si vous pouvez m'éclairer sur ce point aussi, ça serait sympa!
Merci d'avance
classe de test :
(la commande s'execute bien quand je la lance a la main )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class test { /** * @param args */ public static void main(String[] args) { String lResult; String pFilePath = "fichier.txt"; String lFileName = new File(pFilePath).getName(); String lFileOut = "out" + lFileName + ".log"; String lCmd = "/usr/bin/cksum " + pFilePath + " > " + lFileOut; try { Runtime lRuntime = Runtime.getRuntime(); Process lProcess = lRuntime.exec(lCmd); // attente de la fin d'execution de la commande si necessaire lProcess.waitFor(); System.out.println(lCmd); System.out.println(lProcess.exitValue()); BufferedReader lReader = new BufferedReader(new FileReader(lFileOut)); String lReturn = lReader.readLine(); lReader.close(); String[] lReturns = lReturn.split(" "); if(lReturns.length == 3){ lResult = lReturns[0]; } lResult = "Error1"; }catch(Exception e) { e.printStackTrace(); lResult = "Error2"; } System.out.println(lResult); } }
Partager