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

Langage Java Discussion :

Lancer une application


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Par défaut Lancer une application
    Bonjour
    il ya peu de temps j'ai résolu un problème qui consiste à lancer une application externe du genre : ./commande inputfile > outputfile , comme java ne gère pas les redirections du type ">" j'ai changé les System.out ou je redirige vers un fichier.

    Mon problème maintenant est comment faire pour lancer une application du type : ./commande < fichier, ou fichier est le stdin representant un fichier.

    Quelqu'un pourrait m'aider à faire cela ?

    Merci pour votre aide

  2. #2
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    As tu jeté un coup d'oeil au tuto de developpez.com ? ==> http://ydisanto.developpez.com/tutoriels/j2se/runtime/

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Par défaut
    oui mais je trouve nul part comment prendre un stdin comme input pour une application externe.

  4. #4
    Membre éclairé Avatar de Chatbour
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 431
    Par défaut
    Salut à tous

    tu peux faire comme ça : (si j'ai bien compris)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().exec("notepad c:\\windows\\win.ini");
    ici notepad ouvre le fichier qu'il reçoit en paramètre.. Alors si ton programme se comporte comme notepad, ça devra marcher..

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    un moyen simple est de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Propess p = Runtime.exec (...)
    p.getOutputStream();
    //Je remplis l'output stream.
    p.getOutputStream().close();
    Et ainsi tu ecris dans l'input stream de ton process.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 137
    Par défaut
    non le probleme n'est pas là.
    je me suis peut etre mal exprimé;
    mon programme se lance comme ça ./commande < fichierinput

    mon probleme est dans la redirection "<"

    si on met la procedure classique de exec avec la chaine de caractère representant la commande ça marche pas

  7. #7
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 708
    Par défaut
    La commande ">" n'a pas d'effet car elle est normalement gérée par l'interpréteur de commande que java n'utilise pas. Ceci dit Java permet d'écrire dan l'entrée standard et de lire la sortie. Tu peux donc écrire le contenu du fichier toi même dans le flux.

    Par exemple, le code suivant(juste pour donner une idée, je ne l'ai pas testé) devrait fournir le fichier "inputfile" en entrée standard.
    Pour lire la sortie, il faudra donc faire la maoeuvre exactement inverse.
    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
     
    Propess p = Runtime.exec ("commande");
     
    FileInputStream fis = new FileInputStream(new File("inputfile"));//Lis le fichier a mettre en flux d'entrée
    OutputStream pos = p.getOutputStream();//Nom trompeur mais il faut logiquement un outputstream pour écrire dans le flux d'entrée
    byte[] buffer = new buffer[1000];
    int size=0;
     
    //ecris le contenu du fichier dans le flux d'entrée
    while(true){
      size = fis.read(buffer);
      if(size==-1) break;
      pos.write(buffer,0,size);
    }
     
    fis.close();
    pos.close();

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/05/2006, 12h42
  2. [application tache de fond] lancer une application
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 5
    Dernier message: 25/03/2005, 12h13
  3. [GNU Pascal] Lancer une application en plein écran
    Par joleboss dans le forum Autres IDE
    Réponses: 13
    Dernier message: 20/05/2004, 13h57
  4. lancer une application au démarrage de WinXP
    Par Sph@x dans le forum Windows
    Réponses: 6
    Dernier message: 07/04/2004, 19h05
  5. Réponses: 2
    Dernier message: 05/12/2003, 12h37

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