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

Java Discussion :

accés à un fichier texte


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut accés à un fichier texte
    Salut tout le monde!
    Dans mon application,j'ai un bouton qui doit faire l'impression d'un fichier texte,dont certains champs sont modifiables à partir d'une base de données MySQL,je ne sais pas quelle API je dois utiliser,ni comment modifier ces champs!
    aidez moi SVP!

  2. #2
    Membre chevronné
    Profil pro
    Développeur Java Indépendant
    Inscrit en
    Mai 2007
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java Indépendant

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 333
    Points : 2 061
    Points
    2 061
    Par défaut
    Bonjour,

    Je ne sais pas si j'ai bien compris votre problème mais voilà ce à quoi j'ai pensé.

    Pour imprimer ton fichier texte, regarde ce lien :
    http://www.exampledepot.com/egs/java...dard/Dest.html

    Pour remplacer les champs modifiables en fonction de ce qu'il y a dans la base de donnée, je propose de mettre des balises dans le fichier texte, comme par exemple "<champs1>", et de les remplacer via une regex avant l'impression.

    Pour la connexion à la base de donnée, ça dépend, mais à priori JDBC devrait suffire.

    Bon courage
    Yoshi

    PS : tous les propos tenus dans le message ci-dessus sont à préfixer avec "A mon humble avis", "Je pense que". Il serait inutilement fastidieux de le rappeler à chaque phrase.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Herve-Loiret Voir le message
    Bonjour,

    Je ne sais pas si j'ai bien compris votre problème mais voilà ce à quoi j'ai pensé.

    Pour imprimer ton fichier texte, regarde ce lien :
    http://www.exampledepot.com/egs/java...dard/Dest.html

    Pour remplacer les champs modifiables en fonction de ce qu'il y a dans la base de donnée, je propose de mettre des balises dans le fichier texte, comme par exemple "<champs1>", et de les remplacer via une regex avant l'impression.

    Pour la connexion à la base de donnée, ça dépend, mais à priori JDBC devrait suffire.

    Bon courage
    Salut Herve-Loiret!
    merci pour ta réponse!
    juste pour les balises, existent elles en java?
    comment les utiliser?peux-tu me donner un lien?
    Merci bien!

  4. #4
    Membre chevronné
    Profil pro
    Développeur Java Indépendant
    Inscrit en
    Mai 2007
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java Indépendant

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 333
    Points : 2 061
    Points
    2 061
    Par défaut
    En fait je parlais de se servir de balise comme d'un marqueur.
    Tu peux mettre n'importe quoi comme balise, comme par exemple "<monChamp1>".

    Tu les remplacera ensuite grâce à une expression régulière.

    Ou alors tu peux utiliser la méthode de la classe String.

    Un exemple (pseudo code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String monfichier = contenuDeMonFichier;
     
    monFichier.replace("<maBalise1>", champsModifiableDepuisLaBase1);
    monFichier.replace("<maBalise2>", champsModifiableDepuisLaBase2);
    monFichier.replace("<maBalise3>", champsModifiableDepuisLaBase3);
    ... etc.
    Et ensuite tu lance l'impression

    Tu vois ce que je veux dire ? ^^
    Yoshi

    PS : tous les propos tenus dans le message ci-dessus sont à préfixer avec "A mon humble avis", "Je pense que". Il serait inutilement fastidieux de le rappeler à chaque phrase.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Herve-Loiret Voir le message
    En fait je parlais de se servir de balise comme d'un marqueur.
    Tu peux mettre n'importe quoi comme balise, comme par exemple "<monChamp1>".

    Tu les remplacera ensuite grâce à une expression régulière.

    Ou alors tu peux utiliser la méthode de la classe String.

    Un exemple (pseudo code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String monfichier = contenuDeMonFichier;
     
    monFichier.replace("<maBalise1>", champsModifiableDepuisLaBase1);
    monFichier.replace("<maBalise2>", champsModifiableDepuisLaBase2);
    monFichier.replace("<maBalise3>", champsModifiableDepuisLaBase3);
    ... etc.
    Et ensuite tu lance l'impression

    Tu vois ce que je veux dire ? ^^
    Salut Herve-Loiret!
    si,j'ai bien compris je dois utiliser un fichier xml pour pouvoir utiliser les balises!?
    désolé,je suis débutant en java,j'ai des connaissances modestes sur ses APIs!

  6. #6
    Membre chevronné
    Profil pro
    Développeur Java Indépendant
    Inscrit en
    Mai 2007
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java Indépendant

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 333
    Points : 2 061
    Points
    2 061
    Par défaut
    Nan en fait le principe ça serait d'intégrer les balises directement dans le fichier texte, qu'importe qu'il soit xml :-)

    Je m'explique, là dans l'exemple on a mis "<champs1>" mais c'est juste un marqueur, on aurait pu très bien mettre aussi "===champs1===" c'est juste histoire de savoir ou placer les champs qui sont modifiables à partir de la base de données :-)
    Hésites pas si t'a d'autres questions.
    Yoshi

    PS : tous les propos tenus dans le message ci-dessus sont à préfixer avec "A mon humble avis", "Je pense que". Il serait inutilement fastidieux de le rappeler à chaque phrase.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Merci mon ami pour ton aide!
    peux-tu me dire comment intégrer ces balises dans mon fichier?un tutoriel si possible!

  8. #8
    Membre chevronné
    Profil pro
    Développeur Java Indépendant
    Inscrit en
    Mai 2007
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java Indépendant

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 333
    Points : 2 061
    Points
    2 061
    Par défaut
    De rien

    Pour intégrer les balises dans ton fichier, rien de plus simple, il suffit de l'ouvrir avec un éditeur de texte et de les insérer à la main.

    C'est le remplacement des ces balises par les valeurs dans la base qui sera dynamique
    Yoshi

    PS : tous les propos tenus dans le message ci-dessus sont à préfixer avec "A mon humble avis", "Je pense que". Il serait inutilement fastidieux de le rappeler à chaque phrase.

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 33
    Points : 42
    Points
    42
    Par défaut
    En tout cas, pour imprimer tu peux utiliser cette API (relativement simple) : http://java.sun.com/javase/technolog...ktop/printing/

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Salut tout le monde!
    Merci de se pencher sur mon problème!
    Herve-Loiret,j'ai tenté de chercher dans WORD comment intégrer une balise,j'ai trouvé dans insertion, une option pour ajouter un signet.
    est ce ça le truc pour ajouter une balise?

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Pour générer dynamique des document des type office, regarde du coté de la librairie JODReport et JODConverter. Une fois le document open offic créé tu peux l'imprimer avec l'api Desktop de java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Desktop.getDesktop().print(fichier);

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Salut tout le monde!
    Enfin,j'ai réussi à résoudre la question,je donne le code pour ceux qui pourraient se trouver dans le même problème
    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
    46
    47
    48
     
    import java.util.regex.*;
    import java.io.*;
    public class prepareFile{
    	  static File fin ;
    	  static File fout ;
    	public prepareFile(){
            fin = new File("calcul.txt");
             fout = new File("nouveau.txt");
     
    }
     
     
    	public static void changeFile(String balise,String replace) throws Exception
    	   //Ouvre l'input et l'output du Stream
     
    	{
    		 try{FileInputStream fis =  new FileInputStream(fin);
    		 FileOutputStream fos = new FileOutputStream(fout);
     
    		 BufferedReader in = new BufferedReader(new InputStreamReader(fis));
    		 BufferedWriter out = new BufferedWriter( new OutputStreamWriter(fos));
     
    		 Pattern p = Pattern.compile(balise);
    		 Matcher m = p.matcher(replace);
    		 String aLine = null;
    		 while((aLine = in.readLine()) != null) {
    			 m.reset(aLine);
     
    			 String result = m.replaceAll(replace);
    			 out.write(result);
    			 out.newLine();
    		 								}
    	 in.close();
    		 out.close();}
    		 catch(Exception e){	e.printStackTrace();}
    	}
     
    	public static void main(String[] arv) throws Exception{
     
    			prepareFile f =new prepareFile();
    			changeFile("<Nbrejours>", "17");
    			changeFile("<Nom>", "Amine Mohammed");
    			changeFile("<grade>", "9");
     
    }
     
    }
    :
    merci tchize_ pour ton aide;franchement,j'ai tenté de comprendre comment ca fonctionne le JODReport et JODConverter mais sans resultas!
    je tiens à remercier Hervé-Loret pour son coup de pouce,j'ai pas pu saisir au début ce que tu disais,j'ai cru qu'il s'agit des balises xml.
    il y a seulement un petit problème:
    quand je fais l'exécution de cette classe seul le champs grade se met à jour les autres restent intactes.quand j'appelle la méthode changeFile une seule fois,le champs correspondant se met a jour!
    Pouvez-vous m'aider?

  13. #13
    Membre chevronné
    Profil pro
    Développeur Java Indépendant
    Inscrit en
    Mai 2007
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java Indépendant

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 333
    Points : 2 061
    Points
    2 061
    Par défaut
    Bonjour vamos, cool je suis ravi que tu avance .

    J'ai pas eu le temps de bien regarder ton code, mais est-ce que si tu rajoute out.flush(); avant la ligne out.close(); cela résoud ton problème ? :-)

    Il est probable que le problème vienne de là.
    Tiens nous au courant
    Yoshi

    PS : tous les propos tenus dans le message ci-dessus sont à préfixer avec "A mon humble avis", "Je pense que". Il serait inutilement fastidieux de le rappeler à chaque phrase.

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par vamos Voir le message
    merci tchize_ pour ton aide;franchement,j'ai tenté de comprendre comment ca fonctionne le JODReport et JODConverter mais sans resultas!
    Disons que je pensais que tu parlais de documents formatés, pas de documents plain text

    Si seul ta balise grade est remplacée c'est parce que tu recommence à chaque fois depuis le fichier d'origine et non pas depuis le résultat précédent

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

    Informations forums :
    Inscription : Juillet 2009
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Salut les gars!
    j'ai trouvé le problème;j'ai modifié la méthode changeFile() pour qu'elle fasse toutes les modifications à la fois,parce qu'au début à chaque fois que je l'appelle de nouveau elle annulait la modification précédente puisqu'elle prend le premier fichier comme source!voici la nouvelle classe
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    import java.util.regex.*;
    import java.io.*;
    public class prepareFile{
    	  static File fin ;
    	  static File fout ;
    	public prepareFile(){
          fin = new File("calcul.txt");
             fout = new File("nouveau.txt");
     
    }
     
     
    	public void changeFile(String replace1,String replace2,String replace3) throws Exception
    	   //Ouvre l'input et l'output du Stream
     
    	{
    		 try{  FileInputStream fis =  new FileInputStream(fin);
    		 FileOutputStream fos = new FileOutputStream(fout);
     
     
     
    		 BufferedReader in = new BufferedReader(new InputStreamReader(fis));
    		 BufferedWriter out = new BufferedWriter( new OutputStreamWriter(fos));
     
    		 Pattern p1 = Pattern.compile("<Nbrejours>");
    		 Matcher m1 = p1.matcher(replace1);
    		 Pattern p2 = Pattern.compile("<Nom>");
    		 Matcher m2 = p2.matcher(replace2);
    		 Pattern p3 = Pattern.compile("<grade>");
    		 Matcher m3 = p3.matcher(replace3);
    		 String aLine = null;
    		 while((aLine = in.readLine()) != null) {
    			 m1.reset(aLine);
    			 m2.reset(aLine);
    			 m3.reset(aLine);
    			 String result= m1.replaceAll(replace1);
    		while(m2.find())	 result= m2.replaceAll(replace2);
    		while(m3.find())	 result= m3.replaceAll(replace3);
    			 out.write(result);
    			 out.newLine();
    		 								}
    	 in.close();
    	 out.flush();
    	out.close();
    	 }
    		 catch(Exception e){	e.printStackTrace();}
    	}
    	public static void main(String[] arv) throws Exception{
     
    			prepareFile f =new prepareFile();
    			f.changeFile("17", "Amine Mohamed","9");
     
     
    	}
    }
    permettez moi de poser une question:
    est ce que java gère les fichiers word?car j'ai tenté de faire la même chose avec un fichier .doc mais ca n'a pas marché!

  16. #16
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    java gère les fichiers binaires, les fichiers word sont binaires. Mais ça s'arrête là. Si tu veux interpréter et modifier le contenu d'un fichier word c'est autre chose qu'une fichier texte brut!

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

Discussions similaires

  1. accès à un fichier texte
    Par Dragna_x dans le forum IIS
    Réponses: 2
    Dernier message: 16/08/2010, 18h42
  2. Impossible d'avoir accès à un fichier texte
    Par gabdeschenes dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/07/2010, 18h24
  3. Réponses: 4
    Dernier message: 16/09/2009, 16h21
  4. Question bête: accés concurent à un fichier texte
    Par djynwk dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2006, 00h54
  5. Export Table Acces vers fichier Texte
    Par ston dans le forum Access
    Réponses: 2
    Dernier message: 04/04/2006, 17h21

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