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 :

Java FileInputStream exception


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut Java FileInputStream exception
    Bonjour a tous jsuis un petit debutant et c'est donc au grands de la prog que je demande a résoufre mon probleme

    Voila je creer une fonction qui permet d'imprimer plusieur PDF.
    Je vous explique le fonctionnement
    J'ai une table qui contient des donnees.
    Je les récuperes et je cree un PDF a partir de celle ci.
    Ensuite pour les imprimer je passe par un exe qui convertit mon fichier PDF en PS.
    Ensuite je suis "censé" recuperer les PS pour les imprimer
    voila le 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
     
    //debut boucle for
    try{
     printPdf = new PrintPDF ("C:\\"+ficPdf+".pdf");
     printPdf.generateOutputFileName();//va genere un nom pour le ps
     printPdf.convertPdfToPostScript();// va convertir le pdf en ps avec le nom genere
     FileInputStream fis = new FileInputStream(printPdf.getOutPutFileName());
     DocAttributeSet das = new HashDocAttributeSet();
     doc = new SimpleDoc(fis,flavor, das);
     lesDocs[increment] = doc;
    }catch(FileNotFoundException ex){
     ex.printStackTrace();
    }
    //fin boucle for
    Seulement voila le pdf est generé, le postscript aussi mais quand il va recuperer le fichier avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileInputStream fis = new FileInputStream(printPdf.getOutPutFileName());
    il me dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.io.FileNotFoundException : C:\temp_impression24130340463.ps (le fichier specifié est introuvable)
    alors que le fichier exsite avec le bon nom et le bon emplacement .

    que faire et pourquoi cette erreur ?

    j'attends avec impatience vos reponses

  2. #2
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    bonjour,

    bon pour etre franc je suis loin d'etre un grand de la prog (juste un ti débutant) mais j'ai juste une question idiote (je fais souvent des erreurs idiote alors c'est ce qui me vient a l'esprit en ptremier en général) : tu as vérifier l'extension du fichier que tu récupere ?

  3. #3
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    oui oui lextension est bonne c'est du postscript et le fichier generé est nomfic.ps et dans mon repertoire c le fichier est bon et son extension est la bonne aussi

  4. #4
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    escuse moi mais tu peux me dire de quel classes hérite la méthode generateOutputFileName() parce que je ne trouve pas de classe OutputFileName sur le site de sun .

  5. #5
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    en fait cest une classe qui s'apelle PrintPdf. mais elle n'est pas de chez sun.
    c'est une classe faites par ancien collegues de boulot qui est partit malheuresement
    Seulement cette classe fonctionne car j'ai testé avec un fichier ca marche , limpression fonctionne.
    mais avec plusieurs ca plante !
    C'est juste que je veux savoir pkoi j'ai cette erreur puique le ps est generé et exsiste ...

  6. #6
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    enfin c'est une classe qu'il a trouvé sur internet.
    la classe exporte le pdf en ps grace a XPDF.

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Vérifies que dans la méthode "convertPdfToPostScript()", le flux pour écrire le fichier ps est bien fermé à la fin (genre outputStream.close()).

  8. #8
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    merci de la reponse javais essayer et je vous met au courant

  9. #9
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    en fait non trop bete moi aussi !
    convertPdfToScript() lance un exe de XPDF qui se charge de l'exportation du pdf en script.
    Il recupere le nom d'entree printPdf.getInputStream et le nom de sortie géneré par generateOutputFileName() et on le recupere comme ca printPdf.getOutputFileName()

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Le problème vient certainement de là.

    Comment est invoqué l'exe ? avec Runtime.getRuntime().exec(...) ?

    Il me semble que Runtime.getRuntime().exec(...) exécute en asynchrone.

  11. #11
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    Citation Envoyé par Duc Lebowski Voir le message
    Le problème vient certainement de là.

    Comment est invoqué l'exe ? avec Runtime.getRuntime().exec(...) ?

    Il me semble que Runtime.getRuntime().exec(...) exécute en asynchrone.
    heu petite question Duc Lebowski j'ai pas tout compris... tu veux dire qu'il execute l'action pour récuperer le fichier avant que celui ci ne soit creer ?

  12. #12
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    j'ai bien regardé et en fait il narrive pas a ouvrir le fichier

    car le messge pointe sur la classe FileInputStream et pour le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileInputStream(File file)
    dedans il ya linstruction qui dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fd = new FileDescriptor();
    open(name)//name etant le nom/url du file
    et le messgae derreur me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java.io.FileNotFoundException: C:\temp_Ipression415456454.ps (Le fichier spécifié est introuvable) at java.io.fileInputStream.open (Native Method)

  13. #13
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    alors pour lexecution c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try{
     Runtime runTime = Runtime.getRuntime();
     Process precess = null;
     String command = pdfToPs.exe + " " + getInputFileName() + " " + getOutputFileName();
     process = runTime.exec(command);
    }catch(Exception e){
       e.printStackTrace();
    }

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Citation Envoyé par nayah Voir le message
    heu petite question Duc Lebowski j'ai pas tout compris... tu veux dire qu'il execute l'action pour récuperer le fichier avant que celui ci ne soit creer ?
    C'est une piste possible... par exemple si tu ne fais pas outputStream.close() et que derrière tu essaies de lire le fichier bah il te dit qu'il existe pas. Et toi t'hallucine parce que quand ton programme est terminé tu vois bien que ton fichier existe. Parce que à la fin de l'exécution Java (System.exit(..)) il ferme automatiquement tous les flux et c'est seulement à ce moment là que ton fichier est créé.

    Ce qui est sûr c'est que si Mr Java il te dit "FileNotFound", il faut lui faire confiance, c'est que réellement le fichier n'existe pas (ou il n'a pas les droits d'aller le voir) !

  15. #15
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    la ligne la plus importante dans la doc c'est surtout celle la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileNotFoundException - if the file does not exist, is a directory rather than a regular file, or for some other reason cannot be opened for reading.
    issues de la doc de sun sur FileInputStream(File file)

    mais si j'ai bien compris ce qu'a dis Duc c'est un probleme de synchronisation... il serai peut etre possible de faire un wait quelque chose... puis de rajouter un OutputStream.close()

    c'est possible a ton avis Duc ?

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Voilà ce qu'il faut faire pour attendre la fin de l'exécution de l'exe pour que Java reprenne la main (c'est le waitFor()):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    try
    {
        Runtime rt = Runtime.getRuntime();
        Process proc = rt.exec("...");
        int exitVal = proc.waitFor();
        System.out.println("Process exitValue: " + exitVal);
    }
    catch (Throwable t)
    {
        t.printStackTrace();
    }

  17. #17
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    alors ca va trop vite pour la machine virtuelle ?

  18. #18
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    ok jvais test ca

  19. #19
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Citation Envoyé par haco28 Voir le message
    alors ca va trop vite pour la machine virtuelle ?
    Non, c'est juste que par défaut il exécute en asynchrone, il appelle l'exe et puis pendant ce temps là il continue à faire son petit boulot. Pour le faire en mode synchrone il faut lui le dire explicitement avec waitFor().

    Ce n'est pas une erreur, tout dépend du besoin... l'asynchrone est parfois utile.

  20. #20
    Membre averti Avatar de haco28
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 64
    Par défaut
    merci pour lexplication.

    bon jteste

    ah jkiffe trop ce forum !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. interruption d'un programme java sans exception
    Par laurent.c123 dans le forum Général Java
    Réponses: 9
    Dernier message: 14/12/2007, 10h10
  2. Réponses: 4
    Dernier message: 13/11/2007, 13h55
  3. Réponses: 9
    Dernier message: 28/08/2007, 16h13
  4. Réponses: 8
    Dernier message: 07/08/2007, 17h21
  5. [Exception]Probleme : Java.lang.Exception
    Par Nico66 dans le forum Général Java
    Réponses: 6
    Dernier message: 09/05/2005, 12h06

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