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

avec Java Discussion :

BufferedReader commencer si


Sujet :

avec Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut BufferedReader commencer si
    Bonjour,

    J'ai un petit soucis que je n'arrive pas à régler.
    En gros je parcours un document txt ligne par ligne et je fais une copie dans un autre document txt
    Or je voudrais commencer ma lecture/copie qu'a partir d'un caractère


    Je voudrais que ce soit a partir du caractère 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    blablablablablablablablablablablablablablabla
    blablablablablablablablablabla
    
    2
    blablablablablablablablablablablablablablabla
    blablablablablablablablablablablablablablabla
    blablablablablablablablablabla
    Voici mon code pour la lecture:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public static String  readFile(String filePath) throws Exception{
     
    	StringBuffer res = new StringBuffer();
    	BufferedReader bis = new BufferedReader(new FileReader(filePath));
    	String lu = bis.readLine();
     
    	while(lu!= null ){			
    		res.append(lu);				
    		lu = bis.readLine();			
    	}		
    	bis.close();
    	return res.toString();	
    }
    Merci d'avance

  2. #2
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    boolean copier = false;
    String condition = "2";
    while(lu!= null ){
        if(copier) {
            res.append(lu);
        }
        else if(lu.equals(condition){
            copier = true;
            res.append(lu); // copie également le 2
        }
        lu = bis.readLine();
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut
    Merci....
    mais ça ne marche pas....
    Es-tu sur que c'est bon ?

  4. #4
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Qu'est-ce qui t'indiques que ça ne marche pas?
    Es-tu sûr qu'il n'y a pas d'autre caractère après le 2 ?

    Ajoute des traces ou utilise un debugger pour savoir exactement ce qui se passe.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut
    j'ai fait un test directement avec une copie de document.

    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
     
    public static String  readFile(String filePath) throws Exception{
     
    	StringBuffer res = new StringBuffer();
    	BufferedReader bis = new BufferedReader(new FileReader(filePath));
    	String lu = bis.readLine();
     
             boolean copier = false;
             String condition = "2";
             while(lu!= null ){
                        if(copier) {
                                res.append(lu);
                         }
                        else if(lu.equals(condition){
                                 copier = true;
                         res.append(lu); // copie également le 2
                         }
                    lu = bis.readLine();
    }
     
    public static void writeFile(String filePath, String toWrite) throws Exception{
    		BufferedWriter bw = new BufferedWriter(new FileWriter(filePath));
    		bw.write(toWrite);
    		bw.close();
    	}	
    public static void copyFile(String srcFilePath, String destFilePath) throws Exception{
    		//copie le contenu du fichier srcFile dans le fichier destFile
     
    		String res = readFile(srcFilePath);		
    		writeFile(destFilePath,res);		  
    	}   
     
    public static void main(String []args ) throws Exception{
     
    copyFile("C:\\Documents and Settings\\...\\t1.txt",
    		"C:\\Documents and Settings\\...\\t2.txt");
    }

  6. #6
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Et alors? Qu'est-ce qui t'indiques que ça ne marche pas? quel est le résultat?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut
    et bien mon fichier texte destination est vide
    et en mettant (!copier) dans le premier if
    le fichier de destination est identique au fichier source...

    Donc on y est presque....

  8. #8
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Essai en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    else if(lu.startsWith(condition){
        System.out.println("-" + lu + "-"); // pour vérifier si 2 est seul caractère sur la ligne
        copier = true;
        res.append(lu); // copie également le 2
    }

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut
    A oui il y a un problème effectivement...
    car il ne met pas les deux "-" autour du deux ....

  10. #10
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Les "-" apparaissent forcément dans la trace de la sortie standard (la console), si on entre dans le else.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut
    oula autan pour moi
    oui dans la console ça s'affiche bien
    pff fatigué la....

    et dans le document le 2 s'affiche tout seul
    avant et après ont été effacé

  12. #12
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Le fichier est bien généré?
    qu'est-ce qu'il y a entre les "-" dans la console?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut
    dans la console: -2-

    en fait j'avais utiliser tout le prog pour trier un texte:
    genre enlever les chiffre : !(lu.charAt(0)>='0' && lu.charAt(0)<='9') est ça marchait très bien

    donc j'ai tout enlever pour me concentrer que sur mon problème
    Et c'est vrai que c'est bizarre ce qui arrive....

  14. #14
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Alors ton problème est résolu?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut
    bah non il doit afficher tout ce qui est après le 2
    et il affiche que le deux

    c'est ça mon problème

  16. #16
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Il y a plus simple pour enlever les chiffres d'une chaîne de caractère, en utilisant une expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String test = "0toto1titi69tata1tutu0";
    String result = test.replaceAll("[0123456789]", "");
    System.out.println(result);
     
    // affiche : tototititatatutu

  17. #17
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par morph41 Voir le message
    Il y a plus simple pour enlever les chiffres d'une chaîne de caractère, en utilisant une expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String test = "0toto1titi69tata1tutu0";
    String result = test.replaceAll("[0123456789]", "");
    System.out.println(result);
     
    // affiche : tototititatatutu
    Pour l'expression régulière il y a plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String result = test.replaceAll("\\d", "");
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  18. #18
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Citation Envoyé par le y@m's Voir le message
    Pour l'expression régulière il y a plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String result = test.replaceAll("\\d", "");
    Ah...merci pour le renseignement, je débute avec les expressions régulières

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 42
    Par défaut
    Résolu !!

    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
     
     
    StringBuffer res = new StringBuffer();		
    BufferedReader bis = new BufferedReader(new FileReader(filePath));
    String lu = bis.readLine();
     
    		while(lu!= null && !lu.equals("2")){			
    			res.append(lu);			
    			lu = bis.readLine();
    		}
    		if (lu!=null) lu = bis.readLine();
     
    		while(lu!= null){			
    			res.append(lu );
    			lu = bis.readLine();			
    		}
    		bis.close();
    		return res;	
    	}

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

Discussions similaires

  1. identifiant commencant par 1
    Par claudyyyyy dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/04/2004, 14h16
  2. [Rave5][Débutant] commencer en rave
    Par duffman dans le forum Rave
    Réponses: 2
    Dernier message: 07/04/2004, 12h07
  3. Commencer la programmation avec le langage Java ?
    Par von_magnus dans le forum Débuter
    Réponses: 14
    Dernier message: 09/03/2004, 22h19
  4. commencement
    Par br0Nkz dans le forum Débuter
    Réponses: 29
    Dernier message: 16/06/2003, 13h25

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