Recuperer donneees apartir fichier txt java

Fermé
mannatheking Messages postés 32 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 janvier 2010 - 23 nov. 2009 à 22:25
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 - 25 nov. 2009 à 15:34
Bonjour,
voila mon code je veu recuperer le contenu d un fichier txt qui contient les regles d'un firewall dans linux exactement:
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:
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
A voir également:

13 réponses

mannatheking Messages postés 32 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 janvier 2010 1
23 nov. 2009 à 22:37
voila le but je veux recuperer chaque variable de chaque regles par exemple:
voici une ligne de l affichage:
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
je veux que String var='reject';
var2='all';
ainsi de suite
et merci d avance
1
desperow Messages postés 93 Date d'inscription mercredi 18 novembre 2009 Statut Membre Dernière intervention 8 juillet 2010 9
23 nov. 2009 à 22:30
pourrais tu mieux expliquer ton probleme s'il te plait ?
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
23 nov. 2009 à 22:59
tu fait une boucle tant que not EOF et
tu va lire le contenu du fichier jusqu'au avoir un "\\s" c'est un token "espace,retour en ligne.." ex: String.matches("\\s")
et tu met le contenu dans un tableau
0
mannatheking Messages postés 32 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 janvier 2010 1
23 nov. 2009 à 23:01
tu peu m aider car sa fait mtn 2 semaines qui j ai eu ce problem et c urgent car je suis en retard dans mon projet de fin d etude et merci d avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
23 nov. 2009 à 23:39
j'ai pas tout vu mais voici une petit correction

int nbDonnees = 0;
while(st.hasMoreTokens()){
nbDonnees++;
 st.nextToken() ;
}
/** Compte le nombre de lignes pour la création du tableau */
int nbLignes = 1;
int nb = buff.read();
while(nb!=-1){
nb = buff.read();
if(nb==13)
nbLignes++;
System.out.println(nbLignes);
} 
0
mannatheking Messages postés 32 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 janvier 2010 1
23 nov. 2009 à 23:44
merci en tt cas je vais voir et te dire quesqu il va nous donner ok
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
23 nov. 2009 à 23:57
autre chose ta pas besoin de faire un tableau tu peut faire une liste de 2 dimension

     ArrayList<ArrayList<String>> array;
 array = new ArrayList<ArrayList<String>>();
0
mannatheking Messages postés 32 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 janvier 2010 1
24 nov. 2009 à 09:54
merci mais je vais declarer un array list la verite que j ai oublie pas mal de chose dans java alors je suis maintenant un tous petit perdu tu peu me dire comment je vais faire apres et merci bcp
0
mannatheking Messages postés 32 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 janvier 2010 1
24 nov. 2009 à 10:20
voici mon code mtn
: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
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
24 nov. 2009 à 11:22
tu peut faire un truc de se genre il marche pas trop bien il y a un problème dans la boucle a toi de le résoudre :)
!! ta pas besoin de sa StringTokenizer st = new StringTokenizer(premLigne, ";" );
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);
}while(nb2!=13  && nb2!=-1);
array.add(array1);
nb = nb2;
}
}//Fin try
0
mannatheking Messages postés 32 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 janvier 2010 1
25 nov. 2009 à 10:17
merci je voudrais supprimer la ligne qui commence par CHAIN aussi
ton code ne marche pas tres bien mais merci quand meme mais le grand probleme pour moi c le temps car je suis en retard mtn dans mon projet veuillez m aider svp je serai tres reconnaissant et merci d avance
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
25 nov. 2009 à 10:59
bah pour le code qui marche pas , c'est moi qui la fait comme sa :) ta juste besoin d'ajouter juste une petit ligne et sa marche , je vais pas faire tout le boulot ;)
0
mannatheking Messages postés 32 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 janvier 2010 1
25 nov. 2009 à 13:37
merci pour tous mes mes des commentaires sur le code pour que je puisse le comprendre comme il le faut et merci
0
nobie-cs Messages postés 155 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 15 mai 2010 17
25 nov. 2009 à 15:34
se code lit aussi les ligne vide
ex:
aa aaaa bb

bb

il affiche [[aa, aaaa, bb], [], [bb]]

class test{
public static void main(String[] args) throws IOException{
String fil ="test.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
}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;
}
System.out.println(array);
}
catch (IOException e){ System.out.println("Erreur : "+e);
} 
}
}
0