Utilisation de résultas de Commandes DOS

Atoxis29 Messages postés 18 Date d'inscription mercredi 27 juillet 2011 Statut Membre Dernière intervention 19 avril 2012 - 10 févr. 2012 à 15:43
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 10 févr. 2012 à 16:02
Bonjour,

j'aimerai utiliser les résultats de ma commande dans une combo box pour pouvoir permettre la sélection d'un périphériques.

je crois que je suis mal partis, voici ma commande:
private void Load_DeviceActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            Runtime.getRuntime().exec("cmd devcon status =floppydisk *");
            Runtime.getRuntime().exec("cmd devcon status =diskdrive *");
//            Récupération des périphériques présents
        }catch(Exception e) {
            System.out.println("Aucun Périphérique Détecté");
        }
    }




Comment puis-je faire ?

Merci d'avance.

1 réponse

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 372
10 févr. 2012 à 16:02
Bonjour,

Ok, tu as bien fait d'ouvrir un nouveau sujet.

Ton problème est que tu ne sais pas comment récupérer la sortie de ta commande c'est ca. Dans ce cas, utilises cette fonction. Il faut récupérer un flux :

/**
 * Cette procédure permet de lancer la récupération des flux dans un thread distinct
 * @param stream
 * 	Le flux à récupérer
 * @param destination
 *	La liste dans laquelle on enregistre le résultat
 */
private void lancerRecuperationSortie(final InputStream stream, final List<String> destination){
new Thread() {
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line = "";
try {
while((line = reader.readLine()) != null) {
destination.add(line);
}
} finally {
reader.close();
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}.start();
}



Tu peux utiliser cette fonction de la manière suivante :

List<String> lignes = new ArrayList<String>();
Process process = runtime.exec(commande);
lancerRecuperationSortie(process.getInputStream(), lignes);


Ensuite, si aucun périphérique n'est détecté par la commande dos, tu n'auras pas d'exception de levée. Ta ligne System.out.println("Aucun Périphérique Détecté"); est donc trompeuse. Tu devrais plutot afficher dans ce cas "Une erreur est survenue". Mais faire un catch(Exception ) n'est jamais une bonne idée.
0
Rejoignez-nous