Recuperer donneees apartir fichier txt java
mannatheking
Messages postés
34
Statut
Membre
-
nobie-cs Messages postés 157 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
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
13 réponses
-
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 -
pourrais tu mieux expliquer ton probleme s'il te plait ?
-
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 -
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
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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); } -
merci en tt cas je vais voir et te dire quesqu il va nous donner ok
-
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>>(); -
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
-
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 -
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 -
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 -
merci pour tous mes mes des commentaires sur le code pour que je puisse le comprendre comme il le faut et merci
-
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); } } }