Bonjour
Système : Windows 10.
J'ai un petit soucis avec les informations retournées après l'exécution d'une commande Process.
Tous les accents sont supprimés, j'ai essayé avec plusieurs code-pages mais sans succès.
Je veux lire tous les fichiers et répertoires d'un volume sur un NAS sur lequel j'ai les autorisations en lecture (disque Z: ici).
Je voudrais ajouter qu'avec l'explorateur Windows, les accents apparaissent correctement.
Peut-être ma programmation est erronée ? Je sais que l'utilisation d'un vecteur n'est pas la meilleure chose, mais le problème n'est pas là.
Mon exemple :
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 import java.io.File; import java.util.Vector; import gegeutil.Gegetools; public class ListeAll_Windows { public ListeAll_Windows() { ProcessBuilder pb = null; String cmd = "cmd "; String path = "Z:\\"; try { pb = new ProcessBuilder(cmd,"/c", "tree", "/f", "/a" , path ); Process p= pb.start( ); // p est un process. Vector<String> v_result = ProcessFeedback.résultat(p); for (String s : v_result) { System.out.println(s); } } catch (Exception ex) {System.out.println(ex.toString()); } }
Merci d'avance
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 import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Vector; public class ProcessFeedback { public static Vector<String> readFeedBack(Process process) { Vector<String> v_result = new Vector<String>(); try { int i=0; InputStream inputStream = process.getInputStream(); String line; BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream,"UTF_8") ) ; while ((line = reader.readLine()) != null) { v_result.add(i++, line); } return v_result; } catch (Exception ex){return null;} } }
Gérard
Partager