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

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 1
    Points
    1
    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 confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    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
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 1
    Points
    1
    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 confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    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
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 1
    Points
    1
    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 confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    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

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ttttnht Voir le message
    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

    Oui, il faut modifier la classe check,ça je sais bien, mais je ne sais pas comment coder exactement.
    Merci.

  8. #8
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    Je viens de lire le sujet, en fait ce que te dis ttttnht c'est que pour facilité les choses il faudrait déjà modifier la structure de ton fichier Status.txt;
    C'est à dire mettre un séparateur entre tes champs (Exemple "," ou ";")

    Si tu arrives à produire un fichier qui ressemble à ca:
    Port;Name;Status;Vlan;Duplex;Speed;Type
    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


    alors seras le roi du pétrole! Après tu split ton string en tableau... tu fais plein de petite boucle sympatoche... et ca roulera.

    Après si tu as des soucis pour coder c'est une autre chose, dit nous déjà si tu peux faire en sorte que la structure de ton fichier en entré soit semblable à ce que je t'ai montré ci-dessus.
    Christophe

  9. #9
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    mais je ne sais pas comment coder exactement
    Il suffit de faire etape par etape. Si tu ne connais pas bien Java alors il y a des bon tuto.

    Sinon tu peux jeter un coup d'oeil aux lignes suivantes:

    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
     
      java.util.List<String> networkData = new java.util.ArrayList<String>();
     
      public void Check(String str) {
     
        // Do not read the 1st line.
        if (str.contains("Port") || str.contains("Name") || str.contains("Status")
          || str.contains("Vlan") || str.contains("Duplex") || str.contains("Speed") || str.contains("Type")) {
          return;
        }
        String[] data = str.split(",");
        if (data.length != 7) {
          // Error the file in input is not normalized
          throw new RuntimeException("Information invalid: " + str);
        }
        networkData.add(
          data[3].trim() + "," +  // Vlan
          data[0].trim() + "," +  // Port
          data[2].trim() + "," +  // Status
          data[1].trim() + "," +  // Name
          data[4].trim() + "," +  // Duplex
          data[5].trim() + "," +  // Speed
          data[6].trim()          // Type
        );
     
      }
     
      public void summaryVlan(String vlan) {
        java.util.List<String> portConnected = new ArrayList();
        java.util.List<String> portNotConnected = new ArrayList();
     
        for (String obj : networkData) {
          String[] data = obj.split(",");
          if (data[0].equalsIgnoreCase(vlan)) {
            if (data[2].equalsIgnoreCase("connected")) {
              portConnected.add(data[1]);
            } else if (data[2].equalsIgnoreCase("notconnect")) {
              portNotConnected.add(data[1]);
            }
          }
        }
     
        System.out.println("Vlan: " + vlan);
        System.out.println("The total number of ports: " + portConnected.size() + portNotConnected.size());
        System.out.println("The number of connected ports: " + portConnected.size());
        System.out.println("The number of not connected ports: " + portNotConnected.size());
        System.out.println("List of connected ports: " + java.util.Arrays.toString(portNotConnected.toArray()));
        System.out.println("List of not connected ports: " + java.util.Arrays.toString(portNotConnected.toArray()));
      }
    En supposant que le fichier Status.txt a cette forme
    Port,Name,Status,Vlan,Duplex,Speed,Type
    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
    Gi1/0/3,,notconnect,1,auto,auto,10/100/1000BaseTX
    Gi1/0/4,,notconnect,1,auto,auto,10/100/1000BaseTX
    G

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par chriscoolletoubibe Voir le message
    Je viens de lire le sujet, en fait ce que te dis ttttnht c'est que pour facilité les choses il faudrait déjà modifier la structure de ton fichier Status.txt;
    C'est à dire mettre un séparateur entre tes champs (Exemple "," ou ";")

    Si tu arrives à produire un fichier qui ressemble à ca:
    Port;Name;Status;Vlan;Duplex;Speed;Type
    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


    alors seras le roi du pétrole! Après tu split ton string en tableau... tu fais plein de petite boucle sympatoche... et ca roulera.

    Après si tu as des soucis pour coder c'est une autre chose, dit nous déjà si tu peux faire en sorte que la structure de ton fichier en entré soit semblable à ce que je t'ai montré ci-dessus.
    OK, merci à vous deux, vous m'avez beaucoup aider. Mais mon problème, c'est aussi le code, je suis débutant en Java. En plus, j'ai pas beaucoup de temps pour travailler sur les tutos. Alors, pouvez-vous m'indiqué le code? Merci beaucoup.

  11. #11
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    OK, merci à vous deux, vous m'avez beaucoup aider. Mais mon problème, c'est aussi le code, je suis débutant en Java. En plus, j'ai pas beaucoup de temps pour travailler sur les tutos. Alors, pouvez-vous m'indiqué le code? Merci beaucoup.
    Si tu es debutant en Java il faut prendre un peu temps pour regarder les tutos.

    Dans les codes que j'ai poste il suffit de regarder et essayer de comprendre comment ca marche: si tu as des questions, demande et on t'expliquera.

    Une fois que tu comprends tu peux adapter pour tes besoins.

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ttttnht Voir le message
    Si tu es debutant en Java il faut prendre un peu temps pour regarder les tutos.

    Dans les codes que j'ai poste il suffit de regarder et essayer de comprendre comment ca marche: si tu as des questions, demande et on t'expliquera.

    Une fois que tu comprends tu peux adapter pour tes besoins.
    Slt ttttnht,

    J'ai essayé de faire ces code :

    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
     
    package showinterface;
     
     
    import java.lang.String.*;
    import java.lang.Object.*;
     
     
    public class CheckInterface3 {
     
     java.util.List<String> networkData = new java.util.ArrayList<String>();
     
      public void Check(String str) {
     
        // Do not read the 1st line.
        if (str.contains("Port") || str.contains("Name") || str.contains("Status")
          || str.contains("Vlan") || str.contains("Duplex") || str.contains("Speed") || str.contains("Type")) {
          return;
        }
        String[] data = str.split(",");
        if (data.length != 7) {
          // Error the file in input is not normalized
          throw new RuntimeException("Information invalid: " + str);
        }
        networkData.add(
          data[3].trim() + "," +  // Vlan
          data[0].trim() + "," +  // Port
          data[2].trim() + "," +  // Status
          data[1].trim() + "," +  // Name
          data[4].trim() + "," +  // Duplex
          data[5].trim() + "," +  // Speed
          data[6].trim()          // Type
        );
      }
    }
    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
     
    package showinterface;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.lang.String.*;
    import java.lang.Object.*;
     
    public class Main3 {
     
     
     
      public void summaryVlan(String vlan) {
     
          File file = new File("Status.txt");
            BufferedReader reader = null;
         CheckInterface3 che=new CheckInterface3();
         java.util.List<String> portConnected = new ArrayList();
        java.util.List<String> portNotConnected = new ArrayList();
     
     
     
         try
            {
                reader = new BufferedReader(new FileReader(file));
                String str = null;
                while ((str = reader.readLine()) != null)
                {
                    try{
                    che.Check(str);
                    //str = reader.readLine();
                    }catch (Exception e) {}
                }
                } catch (FileNotFoundException e)
            {
                e.printStackTrace();
            } catch (IOException e)
            {
                e.printStackTrace();
            } finally
            {
                try
                {
                    if (reader != null)
                    {
                        reader.close();
                    }
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
     
     
     
        for (String obj : che.networkData) {
          String[] data = obj.split(",");
          if (data[0].equalsIgnoreCase(vlan)) {
            if (data[2].equalsIgnoreCase("connected")) {
              portConnected.add(data[1]);
            } else if (data[2].equalsIgnoreCase("notconnect")) {
              portNotConnected.add(data[1]);
            }
          }
        }
     
        System.out.println("Vlan: " + vlan);
        System.out.println("The total number of ports: " + portConnected.size() + portNotConnected.size());
        System.out.println("The number of connected ports: " + portConnected.size());
        System.out.println("The number of not connected ports: " + portNotConnected.size());
        System.out.println("List of connected ports: " + java.util.Arrays.toString(portNotConnected.toArray()));
        System.out.println("List of not connected ports: " + java.util.Arrays.toString(portNotConnected.toArray()));
      }
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    package showinterface;
     
    public class main4 {
      public static void main(String[] args) {
             Main3 sum = new Main3();
             try{
                 sum.summaryVlan("1");
             }catch (Exception e) {}
         }
    }
    Après l'exécution, j'ai obtenu ça :

    Vlan: 1
    The total number of ports: 00
    The number of connected ports: 0
    The number of not connected ports: 0
    List of connected ports: []
    List of not connected ports: []

    Je vois plus l'erreur, peux-tu me corriger ça?
    Merci

  13. #13
    Membre habitué
    Avatar de chriscoolletoubibe
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Points : 135
    Points
    135
    Par défaut
    Visiblement tes tableaux sont vides.
    Ajoute un sortie dans la console dans chacune de tes conditions afin de voir si il y rentre.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("Ton Message pour la variable:"+tavariable);
    et montre nous la sortie
    Christophe

  14. #14
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    A la premiere vue, si tu veux utiliser networkData dans un autre module il faut dans CheckInterface3:

    - soit le declarer en public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        public java.util.List<String> networkData = new java.util.ArrayList<String>();
    - soit creer un getter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public java.util.List<String> getNetworkData() {
        return this.networkData;
    }
    Sinon essais d'afficher cette ligne dans Main3 pour controler si ton networkData contient des donnees a partir du 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
    14
     
        // Ligne ajoutee avant la boucle for
        System.out.println("Number of ports: " + che.networkData.size());
     
        for (String obj : che.networkData) {
          String[] data = obj.split(",");
          if (data[0].equalsIgnoreCase(vlan)) {
            if (data[2].equalsIgnoreCase("connected")) {
              portConnected.add(data[1]);
            } else if (data[2].equalsIgnoreCase("notconnect")) {
              portNotConnected.add(data[1]);
            }
          }
        }
    Si tu as 0 ca veut dire que tu ne lis pas Status.txt correctement ==> Verifier le format de ton fichier Status.txt.

    Il doit avoir la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Port,Name,Status,Vlan,Duplex,Speed,Type
    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
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Port;Name;Status;Vlan;Duplex;Speed;Type
    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

  15. #15
    Nouveau Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ttttnht Voir le message
    A la premiere vue, si tu veux utiliser networkData dans un autre module il faut dans CheckInterface3:

    - soit le declarer en public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        public java.util.List<String> networkData = new java.util.ArrayList<String>();
    - soit creer un getter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public java.util.List<String> getNetworkData() {
        return this.networkData;
    }
    Sinon essais d'afficher cette ligne dans Main3 pour controler si ton networkData contient des donnees a partir du 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
    14
     
        // Ligne ajoutee avant la boucle for
        System.out.println("Number of ports: " + che.networkData.size());
     
        for (String obj : che.networkData) {
          String[] data = obj.split(",");
          if (data[0].equalsIgnoreCase(vlan)) {
            if (data[2].equalsIgnoreCase("connected")) {
              portConnected.add(data[1]);
            } else if (data[2].equalsIgnoreCase("notconnect")) {
              portNotConnected.add(data[1]);
            }
          }
        }
    Si tu as 0 ca veut dire que tu ne lis pas Status.txt correctement ==> Verifier le format de ton fichier Status.txt.

    Il doit avoir la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Port,Name,Status,Vlan,Duplex,Speed,Type
    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
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Port;Name;Status;Vlan;Duplex;Speed;Type
    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
    OK,le problème est résolu, grâce à toi,ttttnh.
    Merci beaucoup.

  16. #16
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    D'ou vient ton Status.txt? Il faut voir quel programme genere ce fichier.

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