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 :

inserer le résultat issu du parsage des fichiers dans un fichier .txt


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut inserer le résultat issu du parsage des fichiers dans un fichier .txt
    bonjour,

    je souhaite inserer le résultat de parsage des fichiers d'extension .tpl dans un fichier .txt.

    j'ai utilisé une méthode qui permet d'inserer les fichiers que je souhaite parser dans un vecteur (Vector<File>), puis une méthode pour parser mes fichiers.

    mais je trouve un problème pour inserer le résultat de parsage de chaque fichier à unfichier .txt.

    voici le code que j'ai programmé:

    [import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.util.Vector;

    import javax.swing.text.html.HTMLEditorKit;
    import javax.swing.text.html.parser.ParserDelegator;


    public class tester extends HTMLEditorKit.ParserCallback{
    //*****************************************************
    FileWriter fw;
    static BufferedWriter bw;
    static PrintWriter pw;
    //*****************************************************
    InputStream ips;
    InputStreamReader ipsr;
    static BufferedReader br;
    //******************************************************
    static ParserDelegator parser;

    //contructeur d'entrée.
    public tester() throws IOException{
    fw = new FileWriter("hassna.txt");
    bw=new BufferedWriter(fw);
    pw=new PrintWriter(bw);
    }

    //constructeur de sortie
    public tester(File fichier) throws FileNotFoundException{
    ips=new FileInputStream(fichier);
    ipsr=new InputStreamReader(ips);
    br=new BufferedReader(ipsr);
    parser=new ParserDelegator();
    }

    //Méthode pour parser les objets br.
    public static void parssage() throws IOException{
    HTMLEditorKit.ParserCallback callback=new tester();
    parser.parse(br, callback, true);
    }


    //la methode handleText qui sera appelée par la methode parse de la calasse ParserDelegator().
    public void handleText(char []data,int pos){
    pw.println(data);
    System.out.println(data);
    }
    //Méthode pour lister tous les fichiers .tpl qui existe dans le repertoire templates
    public static Vector<File> lister(){
    File repertoire=new File("D:\\PFE\\modules");
    File []list1 =repertoire.listFiles();
    Vector<File> list4=new Vector<File>();
    for(int i=0;i<list1.length;i++){
    // System.out.println("mon repertoire module: "+list1[i].getName());
    File []list2=list1[i].listFiles();
    for(int j=0;j<list2.length;j++){
    if(list2[j].isDirectory() && "templates".equals(list2[j].getName())){
    // System.out.println("mon sous repertoire module: "+list2[j].getName());
    File []list3=list2[j].listFiles();
    for(int k=0;k<list3.length;k++){
    //System.out.println(list3[k].getName());
    if(list3[k].isFile() && list3[k].getName().contains(".tpl")){
    list4.add(list3[k]);
    }else if(list3[k].isDirectory()&& !(".svn".equals(list3[k].getName()))&&("inc_consult_anesth".equals(list3[k].getName())
    || "inc_examen".equals(list3[k].getName())
    || "inc_acc".equals(list3[k].getName()))){
    File []list5=list3[k].listFiles();
    for(int m=0;m<list5.length;m++){
    list4.add(list5[m]);
    }
    }

    }
    }
    }
    }
    return list4;
    }


    public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    Vector<File> listeTPL=lister();
    for(int i=0;i<listeTPL.size();i++){
    tester fichier=new tester(listeTPL.elementAt(i));
    parssage();

    }
    pw.close();

    br.close();

    }

    }
    ]


    Lors de l'exécution du programme j'obtient le résultat suivant:



    &mdash Sélection d'un exécutant
    {{foreach from=$executants.$category_id item=executant}}
    Exception in thread "main" java.lang.StackOverflowError
    at javax.swing.text.html.parser.ContentModelState.advance(ContentModelState.java:205)
    at javax.swing.text.html.parser.ContentModelState.advance(ContentModelState.java:161)
    at javax.swing.text.html.parser.TagStack.advance(TagStack.java:137)
    at javax.swing.text.html.parser.Parser.legalElementContext(Parser.java:520)
    at javax.swing.text.html.parser.Parser.legalTagContext(Parser.java:695)
    at javax.swing.text.html.parser.Parser.legalElementContext(Parser.java:617)
    ..........................

    ceci juste une porsion du résultat.

    je cherche à parser tous les fihiers qui existent dans le Vector<File> et iserer le résultat issu du parsage dans un fichier .txt.

    Merci infiniment pour votre aide

    Cordialement.

  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 : 42
    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 code est assez illisible. Donc en attendant que tu ajoutes la balise CODE, je dirais que tu as une fonction récursive qui s'emballe
    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 chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    De plus il faudrait la trace complète, car là on ne voit pas le point d'entrée dans ton code, on voit uniquement les appels à des méthodes situées dans le package javax.swing.text.html.parser

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    voici le code dans la balise, j'espère qu'il soit lisible:

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
     
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.util.Vector;
     
    import javax.swing.text.html.HTMLEditorKit;
    import javax.swing.text.html.parser.ParserDelegator;
     
     
    public class tester extends HTMLEditorKit.ParserCallback{
    	//*****************************************************
    	FileWriter fw;
    	static BufferedWriter bw;
    	static PrintWriter pw;
    	//*****************************************************
    	 InputStream ips;
    	InputStreamReader ipsr;
    	static BufferedReader br;
    	//******************************************************
    	static ParserDelegator parser;
     
    	//contructeur d'entrée.
    	public tester() throws IOException{
    		fw = new FileWriter("hassna.txt");
    		bw=new BufferedWriter(fw);
    		pw=new PrintWriter(bw);
    	}
     
    	//constructeur de sortie
    	public tester(File fichier) throws FileNotFoundException{
    		ips=new FileInputStream(fichier); 
    		 ipsr=new InputStreamReader(ips);
    		 br=new BufferedReader(ipsr);
    		 parser=new ParserDelegator();
    	}
     
    	//Méthode pour parser les objets br.
    	public static void parssage() throws IOException{
    		HTMLEditorKit.ParserCallback callback=new tester();
    		parser.parse(br, callback, true);
    	}
     
     
    	//la methode handleText qui sera appelée par la methode parse de la calasse ParserDelegator().
    	public void handleText(char []data,int pos){
    		pw.println(data);
    		System.out.println(data);
    	}
    		//Méthode pour lister tous les fichiers .tpl qui existe dans le repertoire templates
    		public static Vector<File> lister(){
    			File repertoire=new File("D:\\PFE\\modules");
    		     File []list1 =repertoire.listFiles();
    		     Vector<File> list4=new Vector<File>();
    		     for(int i=0;i<list1.length;i++){
    		    	// System.out.println("mon repertoire module: "+list1[i].getName());
    		    	 File []list2=list1[i].listFiles();
    		    	 for(int j=0;j<list2.length;j++){
    		    		 if(list2[j].isDirectory() && "templates".equals(list2[j].getName())){
    		            	// System.out.println("mon sous repertoire module: "+list2[j].getName());
    		    			 File []list3=list2[j].listFiles();
    		    			 for(int k=0;k<list3.length;k++){
    		    					 //System.out.println(list3[k].getName());
    		    					 if(list3[k].isFile() && list3[k].getName().contains(".tpl")){
    		    						 list4.add(list3[k]);
    		    					 }else if(list3[k].isDirectory()&& !(".svn".equals(list3[k].getName()))&&("inc_consult_anesth".equals(list3[k].getName()) 
    		    							 || "inc_examen".equals(list3[k].getName())
    		    							 || "inc_acc".equals(list3[k].getName()))){
    		    						 File []list5=list3[k].listFiles();
    		    						 for(int m=0;m<list5.length;m++){
    		    						 list4.add(list5[m]);
    		    						 }
    		    					 }
     
    		    			 }
    		    		 }
    		    	 }
    		     }
    		     return list4;
    		}
     
     
    	public static void main(String[] args) throws IOException {
    		// TODO Auto-generated method stub
    		Vector<File> listeTPL=lister();
    		for(int i=0;i<listeTPL.size();i++){
    		tester fichier=new tester(listeTPL.elementAt(i));
    		parssage();
     
    		}
    		pw.close();
     
    		br.close();
     
    	}
     
    }
    Merci pour votre attention.

  5. #5
    Membre chevronné
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Points : 2 197
    Points
    2 197
    Par défaut
    Tu n'as pas posté la trace, difficile de savoir d'où vient l'erreur.

    Je ne sais pas si cela va corriger l'erreur, mais ce que je te propose est une solution qui me parait plus claire et sera plus facile à debugger. Il suffit d'appeler chercher avec en paramètres le dossier dans lequel on veut chercher, et l'extension des fichiers désirés.

    Tu peux facilement l'adapter à ton besoin :
    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
        private static ArrayList<File> _listeFichiers= new ArrayList<File>();
        public static void chercher(File racine, String extension) {
            if(racine == null || extension == null) return;
            File[] fichiers = racine.listFiles();
            if(fichiers == null) return;
     
            for (int i = 0; i < fichiers.length; i++) {
                if(fichiers[i].isFile() && fichiers[i].getName().endsWith(extension)) {
                    _listeFichiers.add(fichiers[i]);
                }
                else if(fichiers[i].isDirectory()) {
                    chercher(fichiers[i], extension);
                }
            }
        }
    Plutôt que d'utiliser Vector, tu devrais utiliser ArrayList, qui fonctionne exactement pareil sauf que ce n'est pas synchronisé. (inutil dans ton cas, tu gagneras en performances)

Discussions similaires

  1. Insérer des signets dans un fichier pdf issu d'une fusion de fichiers pdf
    Par aude_alti dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/04/2013, 14h38
  2. Exporter le résultat des tests dans un fichier xml
    Par hibou107 dans le forum Boost
    Réponses: 1
    Dernier message: 14/11/2011, 20h14
  3. Inserer Des données dans un fichier
    Par Kalite dans le forum C++
    Réponses: 5
    Dernier message: 24/03/2007, 14h24
  4. [debutant] preservation des espace dans un fichier xml
    Par Eric B dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 03/09/2003, 09h43
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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