Recuperer donneees apartir fichier txt java

mannatheking Messages postés 34 Statut Membre -  
nobie-cs Messages postés 157 Statut Membre -
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 34 Statut Membre 1
 
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 104 Statut Membre 9
 
pourrais tu mieux expliquer ton probleme s'il te plait ?
0
nobie-cs Messages postés 157 Statut Membre 17
 
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 34 Statut Membre 1
 
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 157 Statut Membre 17
 
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 34 Statut Membre 1
 
merci en tt cas je vais voir et te dire quesqu il va nous donner ok
0
nobie-cs Messages postés 157 Statut Membre 17
 
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 34 Statut Membre 1
 
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 34 Statut Membre 1
 
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 157 Statut Membre 17
 
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 34 Statut Membre 1
 
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 157 Statut Membre 17
 
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 34 Statut Membre 1
 
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 157 Statut Membre 17
 
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