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 :

Lire fichier txt et afficher des infos


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Par défaut Lire fichier txt et afficher des infos
    Bonjour,

    je souhaiterai récupérer une partie d'un texte dans un fichier txt
    qui se présente comme le fichier attachés (status.txt) :

    Je souhaite d'abord lire le fichier ligne par ligne et puis je souhaite afficher des informations comme :

    Vlan : 1
    Nombre de ports total : 20
    Nombre de ports connecté : 2
    Nombre de ports nonconnecté : 18
    Liste de port connecté : Gi1/0/1,Gi1/0/2
    List de port nonconnecté : Gi1/0/3,Gi1/0/4,Gi1/0/5,Gi1/0/6,Gi1/0/7,Gi1/0/8,Gi1/0/9,Gi1/0/11,Gi1/0/12,Gi1/0/13,Gi1/0/17,Gi1/0/18,Gi1/0/19,Gi1/0/20,Gi1/0/25,Gi1/0/26,Gi1/0/27,Gi1/0/28

    *********

    Vlan : 2
    Nombre de ports total : 5
    Nombre de ports connecté : 2
    Nombre de ports nonconnecté : Gi1/0/10,Gi1/0/21
    List de port nonconnecté : Gi1/0/22,Gi1/0/23,Gi1/0/24

    .
    .
    .

    J'ai essayé d'écrire ce code mais ça affiche pas ce que je veux.

    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
     
    import java.util.ArrayList;
    import java.lang.String.*;
    import java.lang.Object.*;
     
     
    public class CheckInterface {
     
    int ctrVlan;
    java.util.List<String> list1 = new ArrayList<String>();
    java.util.List<String> list2 = new ArrayList<String>();
     
    public void Check(String str){
        if(str.contains("Vlan")){
            ctrVlan++;
        }
        if(str.contains("connect")){
     
     
     
            list1.add(str); 
        }
        if(str.contains("notconnect")){
            list2.add(str);
        }
    }
    }
    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
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Arrays;
    import java.lang.String.*;
    import java.lang.Object.*;
     
    public class Main {
     
         public static void main(String[] args) {
     
            File file = new File("status.txt");
            BufferedReader reader = null;
            CheckInterface ch=new CheckInterface();
     
            try
            {
                reader = new BufferedReader(new FileReader(file));
                String str = null;
     
                while ((str = reader.readLine()) != null)
                {
                    try{
                    ch.Check(str);
                    str = reader.readLine();
                    }catch (Exception e) {}
                }
     
                for (ch.ctrVlan=1;ch.ctrVlan<4;ch.ctrVlan++)
                {
                    System.out.println("Vlan: " + ch.ctrVlan);
                    System.out.println("The total number of ports: " +(ch.list1.size() + ch.list2.size()));
                    System.out.println("The number of connected ports: " +ch.list1.size());
                    System.out.println("The number of not connected ports: " +ch.list2.size());
                    System.out.println("List of connected ports: " +Arrays.toString(ch.list1.toArray()));
                    System.out.println("List of not connected ports: " +Arrays.toString(ch.list2.toArray()));
                    System.out.println("********************************************************");
                }
            } catch (FileNotFoundException e)
            {
                e.printStackTrace();
            } catch (IOException e)
            {
                e.printStackTrace();
            } finally
            {
                try
                {
                    if (reader != null)
                    {
                        reader.close();
                    }
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
    Avec ces codes, j'ai obtenu ça :
    Vlan: 1
    The total number of ports: 26
    The number of connected ports: 14
    The number of not connected ports: 12
    List of connected ports: [Gi1/0/2 connected 1 a-full a-1000 10/100/1000BaseTX, Gi1/0/4 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/6 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/8 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/10 connect to mail server connected 2 auto auto 10/100/1000BaseTX, Gi1/0/12 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/14 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/16 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/18 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/20 connect to fl2 switch notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/22 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/24 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/26 notconnect 1 auto auto Not Present, Gi1/0/28 notconnect 1 auto auto Not Present]
    List of not connected ports: [Gi1/0/4 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/6 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/8 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/12 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/14 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/16 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/18 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/20 connect to fl2 switch notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/22 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/24 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/26 notconnect 1 auto auto Not Present, Gi1/0/28 notconnect 1 auto auto Not Present]
    ********************************************************
    Vlan: 2
    The total number of ports: 26
    The number of connected ports: 14
    The number of not connected ports: 12
    List of connected ports: [Gi1/0/2 connected 1 a-full a-1000 10/100/1000BaseTX, Gi1/0/4 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/6 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/8 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/10 connect to mail server connected 2 auto auto 10/100/1000BaseTX, Gi1/0/12 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/14 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/16 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/18 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/20 connect to fl2 switch notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/22 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/24 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/26 notconnect 1 auto auto Not Present, Gi1/0/28 notconnect 1 auto auto Not Present]
    List of not connected ports: [Gi1/0/4 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/6 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/8 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/12 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/14 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/16 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/18 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/20 connect to fl2 switch notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/22 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/24 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/26 notconnect 1 auto auto Not Present, Gi1/0/28 notconnect 1 auto auto Not Present]
    ********************************************************
    Vlan: 3
    The total number of ports: 26
    The number of connected ports: 14
    The number of not connected ports: 12
    List of connected ports: [Gi1/0/2 connected 1 a-full a-1000 10/100/1000BaseTX, Gi1/0/4 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/6 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/8 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/10 connect to mail server connected 2 auto auto 10/100/1000BaseTX, Gi1/0/12 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/14 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/16 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/18 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/20 connect to fl2 switch notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/22 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/24 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/26 notconnect 1 auto auto Not Present, Gi1/0/28 notconnect 1 auto auto Not Present]
    List of not connected ports: [Gi1/0/4 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/6 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/8 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/12 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/14 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/16 notconnect 3 auto auto 10/100/1000BaseTX, Gi1/0/18 notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/20 connect to fl2 switch notconnect 1 auto auto 10/100/1000BaseTX, Gi1/0/22 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/24 notconnect 2 auto auto 10/100/1000BaseTX, Gi1/0/26 notconnect 1 auto auto Not Present, Gi1/0/28 notconnect 1 auto auto Not Present]
    ********************************************************

    Quelqu'un a une idée pour corriger ce code?
    Merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Que veux-tu exactement?

    En passant ton fichier en entree (Status.txt), il serait bien d'avoir un separateur de champs (par exemple le caractere ',' ) ca va faciliter beaucoup pour ton programme

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Par défaut
    Citation Envoyé par ttttnht Voir le message
    Que veux-tu exactement?

    En passant ton fichier en entree (Status.txt), il serait bien d'avoir un separateur de champs (par exemple le caractere ',' ) ca va faciliter beaucoup pour ton programme
    Le programme n'affiche pas de bonnes informations, il affiche tout les infos dans le fichier. Alors que je veux afficher juste qqch comme par ex. :

    Vlan : 2
    Nombre de ports total : 5
    Nombre de ports connecté : 2
    Nombre de ports nonconnecté : Gi1/0/10,Gi1/0/21
    List de port nonconnecté : Gi1/0/22,Gi1/0/23,Gi1/0/24

    Je pense que le problème viens de cette 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
     
    public void Check(String str){
        if(str.contains("Vlan")){
            ctrVlan++;
        }
        if(str.contains("connect")){
     
     
     
            list1.add(str); 
        }
        if(str.contains("notconnect")){
            list2.add(str);
        }
    Je voudrais utiliser Split ici , mais je sais pas comment faire. J'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(str.contains("connect 1")){
            list1.add(str.split(" "))[0];
        }
    mais ça marche pas, qqn a une idée?

  4. #4
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Il y a plusieurs choses:
    - Le format de ton fichier est difficile pour separer les informations utiles
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Gi1/0/1 connect to core network		connected    1          a-full a-1000 10/100/1000BaseTX
    Gi1/0/2                      		connected    1          a-full a-1000 10/100/1000BaseTX
    - Le split travaille sur des chaines/caracteres de separation, dans ton cas c'est le caractere blanc (espace) mais en meme temps ce caractere utilise par la colonne Name ou pas d'information.

    Le result de split donne pour la ligne 2 dans Status.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String[] data = str.split(" ");
    /* data[0]    contient la chaine   Gi1/0/1
        data[1]    contient la chaine   connect
        data[2]    contient la chaine   to
        data[3]    contient la chaine   core
        data[4]    contient la chaine   network
        data[5]    contient la chaine   connected
        data[6]    contient la chaine   1
        data[7]    contient la chaine   a-full
        data[8]    contient la chaine   a-1000
        data[9]    contient la chaine   10/100/1000BaseTX
    */
    Le result de split donne pour la ligne 3 dans Status.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String[] data = str.split(" ");
    /* data[0]    contient la chaine   Gi1/0/2
        data[1]    contient la chaine   connected
        data[2]    contient la chaine   1
        data[3]    contient la chaine   a-full
        data[4]    contient la chaine   a-1000
        data[5]    contient la chaine   10/100/1000BaseTX
    */
    D'apres ce que je vois ton Status.txt est genere par un rapport d'admin reseau si c'est possible ajout le characte "," pour la separation des colonnes, ton Status.txt aura cette forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Gi1/0/1,connect to core network,connected,1,a-full,a-1000,10/100/1000BaseTX
    Gi1/0/2,,connected,1,a-full,a-1000,0/100/1000BaseTX
    Une fois le Status.txt est normalise, on peut continuer pour decoder/lire celui-ci

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Par défaut
    Citation Envoyé par ttttnht Voir le message
    Il y a plusieurs choses:
    - Le format de ton fichier est difficile pour separer les informations utiles
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Gi1/0/1 connect to core network		connected    1          a-full a-1000 10/100/1000BaseTX
    Gi1/0/2                      		connected    1          a-full a-1000 10/100/1000BaseTX
    - Le split travaille sur des chaines/caracteres de separation, dans ton cas c'est le caractere blanc (espace) mais en meme temps ce caractere utilise par la colonne Name ou pas d'information.

    Le result de split donne pour la ligne 2 dans Status.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    String[] data = str.split(" ");
    /* data[0]    contient la chaine   Gi1/0/1
        data[1]    contient la chaine   connect
        data[2]    contient la chaine   to
        data[3]    contient la chaine   core
        data[4]    contient la chaine   network
        data[5]    contient la chaine   connected
        data[6]    contient la chaine   1
        data[7]    contient la chaine   a-full
        data[8]    contient la chaine   a-1000
        data[9]    contient la chaine   10/100/1000BaseTX
    */
    Le result de split donne pour la ligne 3 dans Status.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    String[] data = str.split(" ");
    /* data[0]    contient la chaine   Gi1/0/2
        data[1]    contient la chaine   connected
        data[2]    contient la chaine   1
        data[3]    contient la chaine   a-full
        data[4]    contient la chaine   a-1000
        data[5]    contient la chaine   10/100/1000BaseTX
    */
    D'apres ce que je vois ton Status.txt est genere par un rapport d'admin reseau si c'est possible ajout le characte "," pour la separation des colonnes, ton Status.txt aura cette forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Gi1/0/1,connect to core network,connected,1,a-full,a-1000,10/100/1000BaseTX
    Gi1/0/2,,connected,1,a-full,a-1000,0/100/1000BaseTX
    Une fois le Status.txt est normalise, on peut continuer pour decoder/lire celui-ci
    Donc, je dois modifier quoi dans mon programme?

  6. #6
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Donc, je dois modifier quoi dans mon programme?
    Tu dois avoir ton Status.txt avec le format avec le caractere "," comme separateur de colonnes.


    1) En lisant Status.txt, tu mets chaque ligne qui ne contient pas des chaines
    Port,Name, Status dans une zone memoire (list/map)


    2) Pour afficher le resume, parcourir cette zone de memoire,
    Tu pourras alors afficher les informations voulues.


    Il faut modifier la classe check et ton programme pour afficher les informations

Discussions similaires

  1. [Débutant] Afficher des infos venant d'un fichier comme des liens
    Par zinkcool dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/01/2013, 10h15
  2. Afficher des infos venant d'un fichier comme des liens
    Par zinkcool dans le forum ASP.NET
    Réponses: 0
    Dernier message: 13/01/2013, 21h04
  3. lire et utiliser les donnees d'un fichier texte pour afficher des courbes
    Par messaoudi2009 dans le forum Général Java
    Réponses: 1
    Dernier message: 29/04/2009, 21h00
  4. [débutant] filtrer un fichier pour afficher des infos
    Par Valichou dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 21/04/2004, 11h44
  5. Réponses: 3
    Dernier message: 11/03/2004, 16h11

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