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 :

Remplissage des fichiers textes


Sujet :

Entrée/Sortie Java

  1. #1
    Membre du Club
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Points : 47
    Points
    47
    Par défaut Remplissage des fichiers textes
    Bonjour,
    je suis pas bonne en java , je veux lire un fichier texte et remplir les lignes commençant par "***" dans un nouveau fichier, portant le nom de numéro indiqué dans la ligne qui commence par "***C:..."
    la créations des fichiers est correcte mais le remplissage ne se fait pas
    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
     
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer;
    import java.util.*;
    import java.io.*;
     
    public class OrdonnerLesFichiers {
    	public static void main (String [] args ) throws IOException
    	{
    		BufferedReader BF = new BufferedReader (new FileReader ("C:\\Users\\hp\\Desktop\\27Decembre2013\\t.txt"));
    		BufferedWriter fp = null;     
    		String ligneNP;
    		String nomFichier = "";
     
     
    		String name = "";
    		ArrayList<String> maListe = new ArrayList<String>();
    	// création des fichiers 	 
    		while((ligneNP =BF.readLine()) != null  )
            {
    			if (ligneNP.startsWith("***")) 
    			{
    			name=ligneNP;
    			while(name.toString().contains("\\"))
    			{
    	 		   name = name.substring(name.indexOf("\\")+3, name.length());
    	 		   nomFichier = "C:\\Users\\hp\\Desktop\\27Decembre2013\\texte10jan\\"+name+".txt"; 
    	 		}
    			maListe.add(nomFichier);    
    			fp = new BufferedWriter(new FileWriter(nomFichier,true));  
    			System.out.println(nomFichier);
    			}
     
    	    }// end while
     
    		for(int i = 0 ; i < maListe.size(); i++)
    		{
    			String ligne;
    			while((ligne =BF.readLine()) != null  )
    	        {
    				fp.flush();
    				if (ligne.startsWith("***")) 
    				{
    					fp.append(ligne);
    					fp.append("\n");
    					//System.out.println(nomFichier);
    				}
     
    	        }
    			fp.close();
    		}
     
     
     
     
     
     
     
    	  } 
    	}
    et voila le fichier t.txt:
    ***C:\Users\HP\Desktop\GroupeDeDossiers\G1\F.121
    just a few comments
    null
    ***C:\Users\HP\Desktop\GroupeDeDossiers\G1\F.1210
    null null
    null
    ***C:\Users\HP\Desktop\GroupeDeDossiers\G1\F.1211
    that if null need
    need
    null country whose null ship is flag flying
    null ship
    flag flying
    null null
    null
    ***C:\Users\HP\Desktop\GroupeDeDossiers\G1\F.1212
    a null marvellous exercise
    null
    ***C:\Users\HP\Desktop\GroupeDeDossiers\G1\F.1213
    null null those countries awarding null flags would take great care null null null avoid having accept null null
    those countries awarding null flags
    flags
    null null
    null

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Explique-nous comment est organisé ton programme.

    Par exemple je vois deux boucles et des variables utilisées dans ces boucles. Explique-nous que font ces deux boucles, dans quel état sont les variables qu'elles utilisent, et que font-elles à ces variables.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Points : 47
    Points
    47
    Par défaut
    la première boucle est faite pour l'extraction de nom de fichier à partir de ligne qui commence par "***" par exemple le fichier
    ***C:\Users\HP\Desktop\GroupeDeDossiers\G1\F.1211
    that if null need
    need
    null country whose null ship is flag flying
    null ship
    flag flying
    null null
    null
    doit avoir le nom 1211.txt
    la deuxieme boucle j'ai la fait pour remplir ces fichiers par leur contenus, mais la boucle for(int i = 0 ; i < maListe.size(); i++) ne fait rien je dois la supprimer

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ah... Et il faut mettre quelque chose qui boucle comment, alors, à la place ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé

    Homme Profil pro
    Chomeur
    Inscrit en
    Juin 2006
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chomeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 347
    Points : 452
    Points
    452
    Par défaut
    Bonjour,

    Le problème que tu rencontre n'est pas très clair, quelle est la liste qui ne se remplit pas comme tu veux? Tu veux créer un ensemble de nouveaux fichiers à partir des noms contenu dans t.txt sur les lignes contenant "***"? Et tu veux mettre quelquechose dans ces fichiers, peut etre les lignes de t.txt suivant celle avec "***"?

    Sinon, quelques hypothèses :
    -> "name.toString()", je pense que tu peux laisser "name" puisque c'est déjà un string
    -> tu instancie fp dans la première boucle mais tu ne l'utilise que dans la seconde, or tel que ton code est présenté, fp ne va pointer que sur le dernier nomFichier détecté... Il faut peut être exploité "maListe", qui contient les nomFichier, pour instancier fp qu'au moment ou tu va l'utiliser?
    -> Je dis peut etre une betise, mais sur "maListe.add(nomFichier);" et vu la façon dont la valeur est affectée à nomFichier, est ce que tu n'aurai pas une liste contenant plusieurs fois la dernière valeur trouvée pour nomFichier?
    Signature à venir...
    Ancienne : Divers NTIC (PHP, Dojo, à venir...) : http://tif44.fr/blog/

  6. #6
    Membre du Club
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Points : 47
    Points
    47
    Par défaut
    Le problème que tu rencontre n'est pas très clair, quelle est la liste qui ne se remplit pas comme tu veux? Tu veux créer un ensemble de nouveaux fichiers à partir des noms contenu dans t.txt sur les lignes contenant "***"? Et tu veux mettre quelquechose dans ces fichiers, peut etre les lignes de t.txt suivant celle avec "***"
    oui exactement ça

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Parfait. Maintenant réponds à ma question.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    J'ai l'impression que tu voudrais découper ton fichier entrée en plusieurs fichiers, tel que leur nom soit le numéro contenu dans la ligne commençant par ***, et dont le contenu sont les lignes qui suivent, jusqu'à la prochaine ligne précédent celle commençant par ***, et ainsi de suite. C'est çà ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre du Club
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Points : 47
    Points
    47
    Par défaut
    ouii joel.drigo c'est EXACTEMENT ça,

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    En gros, l'algo ça va être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ouvrir fichier en entrée (Reader, InputStream...)
    tant qu'il y a des lignes à lire
         lire une ligne
         si ligne commence par ***
             si un fichier de sortie (Writer, OuputStream...) est ouvert, le fermer
             créer un nouveau fichier de sortie
         sinon 
             si fichier de sortie ouvert, écrire la ligne lue dedans
             sinon il y a une erreur dans le fichier d'entrée
         fin si
    fin tant que
    fermer le dernier de fichier de sortie ouvert le cas échéant
    fermer le fichier d'entrée
    Dans ton code initial, tu as bien commencé : simplement la partie écriture du fichier de sortie ne doit pas être fait dans une boucle à part, mais dans la boucle de lecture du fichier d'entrée.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  11. #11
    Membre du Club
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Points : 47
    Points
    47
    Par défaut
    Merci beaucoup joel.drigo votre algorithme qui m'a aidé, et celui que j'ai appliqué:

    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
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
     
    public class OrdonnerLesFichiers {
    	public static void main (String [] args ) throws IOException
    	{
    		BufferedReader BF = new BufferedReader (new FileReader ("C:\\Users\\hp\\Desktop\\27Decembre2013\\t.txt"));
    		BufferedWriter	fp = null;
    		String str;
     
     
    		while((str =BF.readLine()) != null  )
            {
    			String nomFichier = "";
     
    			if (str.startsWith("***")) 
    			{
     
    				//si un fichier de sortie (Writer, OuputStream...) est ouvert, le fermer
    		        //créer un nouveau fichier de sortie
    				String name=str;	
    				while(name.toString().contains("\\"))
    				{
    				  name = name.substring(name.indexOf("\\")+3, name.length());
    		 		  nomFichier = "C:\\Users\\hp\\Desktop\\27Decembre2013\\texte10jan\\"+name+".txt";
    				}
    				fp = new BufferedWriter(new FileWriter(nomFichier,true));  
    				if (!str.startsWith("***")) 
    				{
    					fp.append(str);
    					fp.append("\n");	
    				}
     
     
    			}
    			else
    			{ 
    				//si fichier de sortie ouvert, écrire la ligne lue dedans
    		        //sinon il y a une erreur dans le fichier d'entrée
    				fp.append(str);
    				fp.append("\n");
    				fp.flush();
    			}
     
            }
    		fp.close();
     
     
     
    	} //fin main
    	}

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Oui, mais tu oublies de fermer le précédent fichier de sortie quand tu en crées un nouveau (juste avant la ligne 30).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( fp!=null ) {
        fp.close();
    }
    fp = new BufferedWriter(new FileWriter(nomFichier,true));
    Par ailleurs, tu peux supprimer les lignes (31 à 35) en gras dans l'extrait suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fp = new BufferedWriter(new FileWriter(nomFichier,true));  
    				if (!str.startsWith("***")) 
    				{
    					fp.append(str);
    					fp.append("\n");	
    				}
    En effet, tu es dans un if (str.startsWith("***")) : donc il est impossible que (!str.startsWith("***")) soit vrai.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Membre du Club
    Femme Profil pro
    Doctorante
    Inscrit en
    Mai 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Doctorante
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 58
    Points : 47
    Points
    47
    Par défaut
    ok c'est fait
    Merci

    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
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
     
    public class OrdonnerLesFichiers {
    	public static void main (String [] args ) throws IOException
    	{
    		BufferedReader BF = new BufferedReader (new FileReader ("C:\\Users\\hp\\Desktop\\27Decembre2013\\t.txt"));
    		BufferedWriter	fp = null;
    		String str;
     
     
    		while((str =BF.readLine()) != null  )
            {
    			String nomFichier = "";
     
    			if (str.startsWith("***")) 
    			{
     
    				//si un fichier de sortie (Writer, OuputStream...) est ouvert, le fermer
    		        //créer un nouveau fichier de sortie
    				String name=str;	
    				while(name.toString().contains("\\"))
    				{
     
    				  name = name.substring(name.indexOf("\\")+3, name.length());
    		 		  nomFichier = "C:\\Users\\hp\\Desktop\\27Decembre2013\\texte10jan\\"+name+".txt";
    				}
    				if ( fp!=null ) {
                          fp.close();
                                    }
    				fp = new BufferedWriter(new FileWriter(nomFichier,true));  
     
    			}
    			else
    			{ 
    				//si fichier de sortie ouvert, écrire la ligne lue dedans
    		        //sinon il y a une erreur dans le fichier d'entrée
    				fp.append(str);
    				fp.append("\n");
    				fp.flush();
    			}
     
            }
    		fp.close();
     
     
     
    	} //fin main
    	}

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

Discussions similaires

  1. PHP5: charger des fichiers textes dans une base MYSQL
    Par koueletbak dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/03/2006, 11h14
  2. Lire des fichiers texte (des chaines de caracteres) ifstream
    Par jamesleouf dans le forum SL & STL
    Réponses: 1
    Dernier message: 22/03/2006, 23h58
  3. Un programme "p2p" pour échanger des fichiers text
    Par Cthulhu 22 dans le forum Développement
    Réponses: 2
    Dernier message: 17/02/2005, 15h51
  4. Importer des fichiers textes délimités
    Par Invité dans le forum Outils
    Réponses: 2
    Dernier message: 23/09/2002, 13h56

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