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
A voir également:
- Recuperer donneees apartir fichier txt java
- Fichier bin - Guide
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Fichier epub - Guide
- Fichier rar - Guide
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
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
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 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);
}
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
: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, ";" );
!! 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
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:
il affiche [[aa, aaaa, bb], [], [bb]]
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);
}
}
}