IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

execution commande sh et shell


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut execution commande sh et shell
    Bonjour,
    J'essaye de récupérer les infos d'un média avec mediainfo (installation cli)
    J'utilise ce code
    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
        public static void main(String[] args) throws IOException, InterruptedException {
            boolean isWindows = System.getProperty("os.name")
      .toLowerCase().startsWith("windows");
    try{
     ProcessBuilder builder = new ProcessBuilder();
        if (isWindows) {
            builder.command("cmd.exe", "/c", "dir");
        } else {
            builder.command("sh", "-c", "cd /Users/sebv/Downloads && mediainfo foo.mkv >>t.txt");
        }
    builder.directory(new File(System.getProperty("user.home")));
    Process process = builder.start();
    StreamGobbler streamGobbler = 
      new StreamGobbler(process.getInputStream(), System.out::println);
    Executors.newSingleThreadExecutor().submit(streamGobbler);
    int exitCode = process.waitFor();
    assert exitCode == 0;
       }catch (Exception e) {
        System.out.println(e.toString());
    }     
        }
     
     private static class StreamGobbler implements Runnable {
        private InputStream inputStream;
        private Consumer<String> consumer;
     
        public StreamGobbler(InputStream inputStream, Consumer<String> consumer) {
            this.inputStream = inputStream;
            this.consumer = consumer;
        }
     
        @Override
        public void run() {
            new BufferedReader(new InputStreamReader(inputStream)).lines()
              .forEach(consumer);
        }
    }
    mais mon fichier t.txt reste vide. La commande fonctionne car lorsque j'ouvre une fenetre terminal et que je tape
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cd /Users/sebv/Downloads && mediainfo foo.mkv >>t.txt
    j'ai bien toutes les infos dans mon fichiers t.txt.
    Quand je remplace la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cd /Users/sebv/Downloads && mediainfo foo.mkv >>t.txt
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cd /Users/sebv/Downloads && ls >>t.txt
    dans mon fichier t.txt il y a bien rempli avec tout les éléments.

    Si quelqu'un a une petite idée.
    Merci
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Tu consommes le flux de sortie oui mais qu'en est-il du flux d'erreur (Process.getErrorStream()) ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/05/2018, 14h43
  2. Executer commande shell OS X
    Par Catskan dans le forum Langage
    Réponses: 3
    Dernier message: 26/09/2012, 23h53
  3. [WD9] executer commande shell
    Par smileyboy dans le forum WinDev
    Réponses: 3
    Dernier message: 10/10/2009, 13h32
  4. Réponses: 1
    Dernier message: 10/06/2009, 13h02
  5. Executer commande shell depuis perl
    Par Matmal11 dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2007, 10h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo