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 :

supprimer les commentaires lu sur un fichier?


Sujet :

Entrée/Sortie Java

  1. #1
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut supprimer les commentaires lu sur un fichier?
    Bonjour,
    voilà je dois lire un fichier en java et ne pas afficher les lignes de commentaires commençant par // comment faire svp??

  2. #2
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,

    il suffit de lire le fichier ligne par ligne et ensuite pour chaque ligne d'appeler la méthode "startWith" pour vérifier si la ligne commence par //
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Salut,

    J'ai une petite méthode qui le fait, mais uniquement avec les // (où qu'il soient), mais pas encore avec les */ /*

    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
    public static String supComm(String ligne) // static si appel depuis main
          {
             boolean encore = true;
             int ind1 = 0;
             int ind2 = 0;
             String newLigne = "";
     
             while(encore)
             {
                encore = false;
                ind1 = ligne.indexOf("//");
                if(ind1 == -1)
                {
                   newLigne = ligne;
                }
                else
                {
                   ind2 = ligne.lastIndexOf("//");
                   if(ind2 != -1)
                   {
                      newLigne = ligne.substring(0, ind2);
                      encore = true;
                      ligne = newLigne;
                   }
                }
             }
    L'appel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
             String ligneNew = "";
     
             //System.out.println("\nligneLue: " + ligneLue);
             ligneNew = supComm(ligneLue);
             System.out.println("ligneNew: " + ligneNew)
    La méthode ne traite pas la lecture du fichier.

    Cordialement,

    Dan

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 93
    Points : 90
    Points
    90
    Par défaut
    désolé mais ton code m'a un peu écorché les yeux
    Alkhan t'a dit d'utiliser la fonction startWith ...
    Pourquoi recherche deux fois //?
    Si tu veux recherche // , n'importe où le indexOf suffi
    Un code qui devrait marcher (attention non testé)
    Ca vient directement de la FAQ à une ligne près
    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
     
    String filePath = "g:\\fichier.txt";
     
    try{
        // Création du flux bufférisé sur un FileReader, immédiatement suivi par un 
        // try/finally, ce qui permet de ne fermer le flux QUE s'il le reader
        // est correctement instancié (évite les NullPointerException)
        BufferedReader buff = new BufferedReader(new FileReader(filePath));
     
        try {
            String line;
            // Lecture du fichier ligne par ligne. Cette boucle se termine
            // quand la méthode retourne la valeur null.
            while ((line = buff.readLine()) != null) {
                if (!line.startsWith("//")){
                    System.out.println(line);
                }
            }
        } finally {
            // dans tous les cas, on ferme nos flux
            buff.close();
        }
    } catch (IOException ioe) {
        // erreur de fermeture des flux
        System.out.println("Erreur --" + ioe.toString());
    }
    boucle alternative
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            while ((line = buff.readLine()) != null) {
                if (line.indexOf("//")>0){
                    System.out.println(line.substring(0, line.indexOf("//")));
                }else{
                    System.out.println(line);
                }
            }
    Pour ceux qui est des */ /* c'est un poil plus compliqué et ça va dépendre de tes consignes (doit on effacer directement tout ce qu'il y a après un */ ou faut il vérifier que la balise est bien fermé).

    (au fait il existe plein d'autres méthodes une, un peu plus violente, serait d'utiliser des split)
    (pas taper moi et mes méthodes de bourrin )
    bonne soirée

  5. #5
    Membre habitué Avatar de zemzoum89
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 373
    Points : 131
    Points
    131
    Par défaut
    Voilà j'ai réussi à faire ce truc avec la méthode startswith comme l'a expliqué Alkhan et aussi j'ai réussi à le faire avec les expressions régulières et voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       static void lecture(Scanner source) {  
     
              Pattern p = Pattern.compile("^(//){1}");
     
           while(source.hasNextLine()) {  
               String line = source.nextLine(); 
               Matcher m= p.matcher(line);
     
                if (m.lookingAt()){}
             else                            
               System.out.println(line);
           }  
       }
    Merci à tous pour votre aide...

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Re,

    @ xme:

    La boucle "du code" ne fonctionne que si les // sont au début de la ligne.

    La boucle alternative est bonne sauf qu'il faut que les // ne soient pas au début c a d en position 0

    il suffit de modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (line.indexOf("//")>0){
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (line.indexOf("//")>-1){
    Cordialement,

    Dan

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

Discussions similaires

  1. Supprimer les commentaires d'un fichier source
    Par Roland Chastain dans le forum Langage
    Réponses: 9
    Dernier message: 21/02/2013, 05h52
  2. [Tsx-Pl7 Pro] Methode pour supprimer les Commentaires et les Mnémoniques
    Par franck.automaticien dans le forum Automation
    Réponses: 6
    Dernier message: 22/06/2007, 20h40
  3. Réponses: 2
    Dernier message: 04/05/2006, 13h10
  4. Comment supprimer les commentaires d'un document Html?
    Par visteur dans le forum Langage
    Réponses: 2
    Dernier message: 27/03/2006, 11h58
  5. Supprimer les espaces des noms de fichier
    Par Cathy dans le forum Linux
    Réponses: 20
    Dernier message: 04/08/2005, 17h13

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