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

Java Discussion :

Recuperer donnees apartir fichier txt java


Sujet :

Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Recuperer donnees apartir fichier txt java
    Bonjour,
    voila mon code je veu recuperer le contenu d un fichier txt qui contient les regles d'un firewall dans linux exactement:

    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
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.StreamTokenizer;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Scanner;
    import java.util.StringTokenizer;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
     
     
    /**
    *
    *
    */
    class fichier {
     
      public static void main(String[] args) throws IOException{
     
        /** Demande d'entrée du nom de fichier à l'utilisateur */
        String fil ="c://fich.txt" ;
        try{
          FileReader lecteurDeFichier = new FileReader(fil);
          BufferedReader buff = new BufferedReader(lecteurDeFichier);
          System.out.println("Lecture du fichier : "+fil);
          //System.out.println(buff.readLine());
          /** Compte le nombre de données par ligne (= nombre de colonnes) */
          //System.out.println(buff.readLine());
          String premLigne = buff.readLine();
          /** Pour séparer les données, on utilise le tokenizer avec pour délimiteur ";" */
          StringTokenizer st = new StringTokenizer(premLigne, ";" );
     
          int nbDonnees = 0;
          while(st.hasMoreTokens()){
            nbDonnees++;
            // System.out.print(st.nextToken()+" " );
          }
          /** Compte le nombre de lignes pour la création du tableau */
          int nbLignes = 1;
          while(buff.ready()){
            buff.readLine();
            nbLignes++;
            // System.out.println(nbLignes);
          }
          /** Déclaration du tableau */
          String[][] tabDonnees = new String[nbLignes][nbDonnees];
     
          FileReader lec = new FileReader(fil);
          BufferedReader BF = new BufferedReader(lec);
     
          /** Rangement des données dans le tableau */
          while(BF.ready()){
            String line = BF.readLine();
            StringTokenizer tok = new StringTokenizer(line, ";" );
            for(int i = 0; i<nbLignes; i++){
              for(int j=0; j<nbDonnees; j++){
                if(tok.hasMoreTokens()){
                  // tabDonnees[i][j]=tok.nextToken();
                  System.out.println( tabDonnees[0][0]);
     
                }
              }
            }
          }//Fin while
        }//Fin try
          catch (IOException e){ System.out.println("Erreur : "+e);
        }
      }//Fin main
    }//Fin
    j ai fichier txt que je veus le transmettre dans ma base de donnees. voici le fichier:
    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
    Chain INPUT (policy ACCEPT)
     
    target prot opt source destination
     
    ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
     
    ACCEPT icmp -- anywhere anywhere
     
    ACCEPT all -- anywhere anywhere
     
    ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
     
    REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
     
    Chain FORWARD (policy ACCEPT)
     
    target prot opt source destination
     
    REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
     
     
     
    Chain OUTPUT (policy ACCEPT)
     
    target prot opt source destination
    je veux justemen avoir chaque partie du regle par exemple accept , all, --, anywhere

  2. #2
    Membre actif

    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Points : 295
    Points
    295
    Par défaut
    Tu dois changer le délimiteur de ton StringTokenizer pour ne pas faire de délimitation sur un ; mais sur un espace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StringTokenizer st = new StringTokenizer(testString, " " );
    Le problème avec cela est que tu vas avoir des incohérences sur les ligne du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chain INPUT (policy ACCEPT)
    ou tu auras 4 éléments.
    Peut être en veux-tu 3 avec le dernier entre parenthèses, il te faudra donc gérer cela, tu peux par exemple lancer un test sur ton string récupéré et lancer les tokens jusqu'à ce que tu finisse la parenthèse, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if (currentToken.startsWith("(")) {
        while(true){
            currentToken = currentToken + " " + st.nextToken();
            if (currentToken.endsWith(")"))    
                break;
        }
    }

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    merci tu sais je veux l eliminer completement la phrase chaine soit input,output,forward aussi j ai change le code et je vais utilisé arraylist a la place de ce tableau voici mon nouveau 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
    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
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.StreamTokenizer;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Scanner;
    import java.util.StringTokenizer;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    class fichier {
     
      public static void main(String[] args) throws IOException{
     
        /** Demande d'entrée du nom de fichier à l'utilisateur */
        String fil ="c://fich.txt" ;
        try{
          FileReader lecteurDeFichier = new FileReader(fil);
          BufferedReader buff = new BufferedReader(lecteurDeFichier);
          System.out.println("Lecture du fichier : "+fil);
          //System.out.println(buff.readLine());
          /** Compte le nombre de données par ligne (= nombre de colonnes) */
          //System.out.println(buff.readLine());
          String premLigne = buff.readLine();
          /** Pour séparer les données, on utilise le tokenizer avec pour délimiteur ";" */
          StringTokenizer st = new StringTokenizer(premLigne, ";" );
     
          /** Déclaration du liste */
           ArrayList<ArrayList<String>> array;
    	   array = new ArrayList<ArrayList<String>>();
    	   Iterator it = array.iterator();
     
     
          FileReader lec = new FileReader(fil);
          BufferedReader BF = new BufferedReader(lec);
     
          /** Rangement des données dans le tableau */
          while(BF.ready()){
            String line = BF.readLine();
            StringTokenizer tok = new StringTokenizer(line, ";" );
     
    		if (currentToken.startsWith("(")) {
    			while(true){
    				currentToken = currentToken + " " + st.nextToken();
    				if (currentToken.endsWith(")"))    
    					break;
    			}
    		}
    			for (it.hasNext()){
     
    				if(tok.hasMoreTokens()){
                  // tabDonnees[i][j]=tok.nextToken();
     
     
                }
              }
            }
          }//Fin while
        }//Fin try
          catch (IOException e){ System.out.println("Erreur : "+e);
        }
      }//Fin main
    }//Fin
    dsl j ai oublie comment fonctionner avec arraylist vous pouvez m aider car sa fait un bout de temps que je ne suis pas utilisé java et merci

  4. #4
    Membre actif

    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Points : 295
    Points
    295
    Par défaut
    Tu dois utiliser 2 méthodes essentiellement pour ArrayList :
    add pour ajouter un élément
    get(int index) pour récupérer un élément

    C'est beaucoup mieux explique dans la javadoc de sun pour ce genre de détail.

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    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
    try{
    FileReader lecteurDeFichier = new FileReader(fil);
    BufferedReader buff = new BufferedReader(lecteurDeFichier);
    System.out.println("Lecture du fichier : "+fil);
        ArrayList<String> array1;
     array1 = new ArrayList<String>();
         ArrayList<ArrayList<String>> array;
     array = new ArrayList<ArrayList<String>>();
    String mot="";
    int nb  =buff.read();
    int nb2 =nb ;
    while(nb!=-1 && nb2!=-1 ){
    nb2=nb;
    array1.clear();
    do{
    mot="";
    do{
    mot= mot+ ((char) nb2);
    nb2 =  buff.read();
     
    }while(nb2!=32 && nb2!=-1 && nb2!=13);
    array1.add(mot);
    System.out.println(mot);
    }while(nb2!=13  && nb2!=-1);
    array.add(array1);
    System.out.println(array1);
    nb = nb2;
    }
    }//Fin try
    mais je c pas il ya un probleme ce qu il m affiche pas comme je veu aussi je veu eliminé les lignes commençant par chain

  6. #6
    Membre actif

    Inscrit en
    Octobre 2009
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 133
    Points : 295
    Points
    295
    Par défaut
    Premièrement
    C'est totalement illisible.

    Ce qui m'amène a ne répondre qu'a la 2eme question :
    Si tu ne souhaites pas les lignes commençant par chain, avant de faire le StringTokenizer, tu vérifies si ta chaîne ne commence pas par Chain (méthode startsWith de la classe String).

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    package javaapplication;

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;

    class test{
    public static void main(String[] args) throws IOException{
    String fil ="c://f.txt" ; //chemain fichier
    try{
    FileReader lecteurDeFichier = new FileReader(fil);
    BufferedReader buff = new BufferedReader(lecteurDeFichier);
    System.out.println("Lecture du fichier : "+fil);
    ArrayList<String> array1; //une liste repr�sente une ligne
    array1 = new ArrayList<String>();
    ArrayList<ArrayList<String>> array; //une liste 2d ligne colonne
    array = new ArrayList<ArrayList<String>>();
    String mot="";
    int nb =buff.read(); // tu lit caract�re par caract�re
    int nb2 =nb ;
    while(nb!=-1 && nb2!=-1 ){
    nb2=nb;
    do{
    mot="";
    do{

    mot= mot+ ((char) nb2); // construire une chaine

    nb2 = buff.read();

    }while(nb2!=32 && nb2!=-1 && nb2!=13); // tant que il y a pas d'espace ni retour en ligne ni fin de fichier

    mot = mot.trim();
    array1.add(mot); // on met la chaine dans la List
    System.out.println(mot);
    }while(nb2!=13 && nb2!=-1); // tant que il y a pas de retour en ligne ni fin de fichier
    array.add(array1); // on met chaque ligne dans la list 2d
    array1 = new ArrayList<String>(); // un supprime la ligne pour la utiliser une 2�me fois
    nb = nb2;
    }

    }
    catch (IOException e){ System.out.println("Erreur : "+e);
    }
    }
    }
    voila le code j ai une table qui contient 6 attribut target destination source state opt prot je veu mettre chaque variable dans son attribut

Discussions similaires

  1. sécurite site donnee sur fichier txt
    Par equicool dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 08/03/2012, 12h37
  2. Emplacement fichier.txt java
    Par jerdel dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 30/08/2009, 15h50
  3. Réponses: 8
    Dernier message: 08/03/2007, 17h54
  4. Importer des donnees avec fichier txt
    Par flOZ dans le forum Requêtes
    Réponses: 8
    Dernier message: 21/04/2006, 18h26
  5. pblme pour recuperer donnee dans fichier texte c++
    Par aerosketchique dans le forum C++
    Réponses: 1
    Dernier message: 11/04/2006, 14h05

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