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

Documents Java Discussion :

lecture de fichier


Sujet :

Documents Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut lecture de fichier
    Bonjour,

    J'ai dans mon application la possibilité de poster un fichier dans ma base de données celui-ci est déclaré comme un byte[] dans les mappings de mon application. Je voudrais maintenant pouvoir le lire/ouvrir avec l'application correspondante à son extension en l'occurence.pdf. Quelqu'un aurait-il un tutoriel assez complet et clair à me suggérer ou quelques pistes?Merci d'avance.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Le plus simple est de passer par un fichier temporaire et de l'ouvrir avec java.awt.Desktop.open.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Le plus simple est de passer par un fichier temporaire et de l'ouvrir avec java.awt.Desktop.open.
    Je suis pas encore très calé en java donc si tu voulais bien explicité ta réponse ce serait vraiment sympathique.
    Où je crée mon fichier temporaire?Dans l'action qui permet d'afficher ma page?
    Comment crée-t-on un fichier temporaire?
    Qu'entends-tu par l'ouvrir avec "java.awt.Desktop.open"?
    Désolé mais je le répète je débute.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par deb31 Voir le message
    Où je crée mon fichier temporaire?Dans l'action qui permet d'afficher ma page?
    Où tu veux, c'est en fonction de ton architecture et du fonctionnement attendu.

    Comment crée-t-on un fichier temporaire?
    Pour créer un fichier temporaire avec une extension : java.io.File#createTempFile. Pour remplir le fichier avec ton tableau de byte, tout se trouve dans le package java.io, notamment BufferedOutputStream et FileOutputStream.

    Qu'entends-tu par l'ouvrir avec "java.awt.Desktop.open"?
    Je parle de la méthode open de la classe Desktop : java.awt.Desktop#open.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Pour remplir le fichier avec ton tableau de byte, tout se trouve dans le package java.io, notamment BufferedOutputStream et FileOutputStream.
    Bonjour,

    J'ai lu les liens que tu m'as donné et me suis documentée mais je ne parviens pas à trouver comment gérer mon tableau de byte. J'ai cherché des renseignements sur BufferedOutputStream et FileOutputStream comme indiqué mais quand je veux l'appliquer le type byte[] de mon objet pose problème. je suis un peu perdu j'aurai besoin d'explication.Merci d'avance.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Il faut que tu écrives les "bytes" vers "l'ouputStream" choisi :
    http://www.java-examples.com/write-b...leoutputstream

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Voici les étapes à suivre :
    1. construction d'un File "tempFile" représentant le fichier temporaire
    2. construction d'un FileOutputStream "fos" avec "tempFile" en paramètre
    3. construction du BufferedOutputStream "bufferOut" avec "fos" en paramètre
    4. utilisation de la méthode "write" sur l'objet "bufferOut" pour écrire ton tableau de byte dans le fichier
    5. fermer correctement tous les flux avec un "close" sur "bufferOut".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 126
    Points : 91
    Points
    91
    Par défaut
    Bon j'avais déjà fait ça donc je te l'envoi mais je te conseil de chercher sur la javadoc ça aide bien

    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
    38
    39
    40
    41
    42
    43
    44
    45
     
    //On met le buffer de données dans un fichier temporaire que l'on ouvre
    //Ici le type est l'extension du fichier (dans ton cas type = "pdf")
    File file = new File("tmp."+type);
    try {
    	FileOutputStream tmpFile = new FileOutputStream(file);
    	tmpFile.write(data); //data est le buffer de données de type byte[]
    	tmpFile.close();
    } 
    catch (FileNotFoundException e1) {
    	e1.printStackTrace();
    } 
    catch (IOException e2) {
    	e2.printStackTrace();
    }
     
    //On ouvre le fichier
    try {
    	Desktop.getDesktop().open(file);
    } 
    catch (IOException e1) {
    	//Si le type est inconnu on recopie dans un un fichier txt que l'on lance après
    	File tmp = new File("tmp.txt");
    	try {
    		FileInputStream in = new FileInputStream(file);
    		FileOutputStream out = new FileOutputStream(tmp);
     
    		byte[] dataTmp = new byte[1024];
     
    		//Lecture du fichier
    		while(in.available() != 0){
    			in.read(dataTmp);
    			out.write(dataTmp);
    		}
    		in.close();
    		out.close();
     
    		Desktop.getDesktop().open(tmp);
     
    	} catch (FileNotFoundException e2) {
    		e2.printStackTrace();
    	} catch (IOException e3) {
    		e3.printStackTrace();
    	}
    }
    En gros si le type n'est pas reconnu sur le pc on l'ouvre avec le bloc note !

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Merci pour vos réponses.

    Pourquoi doit-on définir un string?Moi je n'ai pas de chemin vers un fichier dans mon ordinateur car mon tableau de byte[] est dans ma base de données et je ne veux pas stocker ces fichiers à quelque part je veux juste voir un lien qui me permettrai de les ouvrir le temps que je suis connecté à l'application.

    C'est surement moi qui ne comprend pas le lien que tu m'as envoyé mais moi quand j'utilise FileoutputStream(mon tableau de byte) cela ne l'accepte pas sur ma page ça me demande de mettre un string à la place.

  10. #10
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup beaucoup de m'aider!!
    J'aurai quelques questions concernant le code d'arnaud:

    Que représente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    catch (FileNotFoundException e1) {
                		e.printStackStrace();
                	} 
                	catch (IOException e2) {
                		e.printStackStrace();
                	}
    ??A quoi correspond e??

    Si on met ce code dans une action déclenché lors d'un clic ça m'ouvrira bien mon fichier avec le logiciel voulu?? Est-ce cette ligne qui le permet??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Desktop.getDesktop().open(file);
    Encore merci de votre aide.

  11. #11
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 126
    Points : 91
    Points
    91
    Par défaut
    ah ouai lol dsl je l'ai rajouté en speed :p
    en gros c'est l'exception e1 ou e2 je modifie de suite
    c'est lorsque le fichier n'est pas trouver ou qu'il y a une erreur de lecture ou d'écriture !

    sinon oui c'est bien cette ligne qui permet d'ouvrir le fichier avec le logiciel par défaut du poste utilisateur, pour pdf par exemple ça lancera acrobate reader

  12. #12
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Aucun problème
    Encore une petite question au niveau de l'affichage j'ai mis une image avec un onclick qui me renvoie vers l'action dans laquelle j'ai mis ton code mais cela ne marche pas est-ce bien comme cela qu'il faut faire??

  13. #13
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Non en fait c'est bon j'avais juste une faute de frappe.
    Par contre lorsqu'adobe reader se lance mon fichier n'est pas ouvert est j'obtiens l'erreur suivante:

    "Adobe Reader n'a pas pu ouvrir tmp.pdf, car le type de fichier n'est pas pris en charge ou le fichier est endommagé(il a été envoyé en tant que pièce jointe et n'a pas été décodé correctement,par exemple)."

    Si quelqu'un voit d'où cela peut venir dans mon code ce serait super.Merci d'avance.

  14. #14
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Problème résolu tout marche parfaitement.Encore merci.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par deb31 Voir le message
    Problème résolu tout marche parfaitement.Encore merci.

    on peut savoir comment?

  16. #16
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    oui bien sur!!
    Mais en fait ce n'était pas un erreur dans le code. J'avais tout simplement par erreur joint un fichier au format .doc donc lors de l'ouverture d'acrobate reader le format du fichier était incorect et là plantage...
    Mais du coup ça m'as permis de m'apercevoir qu'il fallait que je mette une condition pour joindre les fichiers.
    Voilà!

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

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 19h27
  2. [jsp]lecture de fichier
    Par antigone dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 04/09/2003, 11h05
  3. [AS400][Intranet][PC] Lecture de "fichiers" AS400
    Par lando dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 16/07/2003, 11h11
  4. Lecture de fichier
    Par Watcha dans le forum x86 16-bits
    Réponses: 13
    Dernier message: 04/03/2003, 20h43
  5. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43

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