Comparaison des èlèments de 2 fichiers .txt
mannnouu
-
joujou -
joujou -
Bonjour,
j'ai 2 fichiers textes :
1- list_arbre.txt : une seule ligne : a b c
2- treillis.txt : 30 lignes : 1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.2 {2,5,11,12} {a,c,e} {2.4,2.3,2.6}
1.3 {6,8,9,10} {b,c,g} {2.1,2.4,2.7}
...
je veux comparer les éléments de la ligne du 1er fichier avec ceux du 3 ème colonne de 2ème fichier c.a.d
a b c avec ( {a,b,d,g} {a,c,e} {b,c,g} ) et mettre résultat de comparaison dans un autre fichier text.
j'ai commencer à résoudre le problème par l'extraction du contenus des fichiers à l'aide des vecteus mais j'étais bloqué par la suite , comment accéder au èlèments du 3ème champ du chaque ligne ?
package Package1;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.StringTokenizer;
import java.util.Vector;
public class class1 {
public static Vector<String> getToken(StringTokenizer st, String l1) {
Vector <String>v = new Vector<String>();
st = new StringTokenizer(l1, " ");
while (st.hasMoreTokens()) {
v.add(st.nextToken());
}
return v;
}
private static Vector<String> lecture(String yfile) {
Vector<String> v = new Vector<String>();
try {
String ligne;
BufferedReader fichier = new BufferedReader(new FileReader(yfile));
while ((ligne = fichier.readLine()) != null) {
if (ligne.endsWith("") & ligne.length() != 0) {
ligne = ligne.substring(0, ligne.length() - 1);
}
v.addElement(ligne);
}
fichier.close();
} catch (Exception e) {
e.printStackTrace();
}
return v;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector <String> tab1 = new Vector<String>();
Vector <String> tab2 = new Vector<String>();
System.out.println("Hi ! ");
tab1 = lecture("list_arbre.txt");
tab2 = lecture("treillis.txt");
for (int i = 0; i < tab1.size(); i++) {
System.out.println(tab1.get(i));
}
for (int i = 0; i < tab2.size(); i++) {
System.out.println(tab2.get(i));
}
}
}
j'ai 2 fichiers textes :
1- list_arbre.txt : une seule ligne : a b c
2- treillis.txt : 30 lignes : 1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.2 {2,5,11,12} {a,c,e} {2.4,2.3,2.6}
1.3 {6,8,9,10} {b,c,g} {2.1,2.4,2.7}
...
je veux comparer les éléments de la ligne du 1er fichier avec ceux du 3 ème colonne de 2ème fichier c.a.d
a b c avec ( {a,b,d,g} {a,c,e} {b,c,g} ) et mettre résultat de comparaison dans un autre fichier text.
j'ai commencer à résoudre le problème par l'extraction du contenus des fichiers à l'aide des vecteus mais j'étais bloqué par la suite , comment accéder au èlèments du 3ème champ du chaque ligne ?
package Package1;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.StringTokenizer;
import java.util.Vector;
public class class1 {
public static Vector<String> getToken(StringTokenizer st, String l1) {
Vector <String>v = new Vector<String>();
st = new StringTokenizer(l1, " ");
while (st.hasMoreTokens()) {
v.add(st.nextToken());
}
return v;
}
private static Vector<String> lecture(String yfile) {
Vector<String> v = new Vector<String>();
try {
String ligne;
BufferedReader fichier = new BufferedReader(new FileReader(yfile));
while ((ligne = fichier.readLine()) != null) {
if (ligne.endsWith("") & ligne.length() != 0) {
ligne = ligne.substring(0, ligne.length() - 1);
}
v.addElement(ligne);
}
fichier.close();
} catch (Exception e) {
e.printStackTrace();
}
return v;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector <String> tab1 = new Vector<String>();
Vector <String> tab2 = new Vector<String>();
System.out.println("Hi ! ");
tab1 = lecture("list_arbre.txt");
tab2 = lecture("treillis.txt");
for (int i = 0; i < tab1.size(); i++) {
System.out.println(tab1.get(i));
}
for (int i = 0; i < tab2.size(); i++) {
System.out.println(tab2.get(i));
}
}
}
Configuration: Windows XP Firefox 3.5.7
3 réponses
-
Salut,
je sais pas si j'ai bien compris..mais regarde ce code..peut etre tu peux t'en inspirer:import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Main{ public static void main(String[] args) throws FileNotFoundException, IOException { String myLine = new BufferedReader(new FileReader("c:\\temp\\fich.txt")).readLine();//recupere la ligne de mon premier fichier (ici a b c ) BufferedReader fichier = new BufferedReader(new FileReader("c:\\temp\\feuille.txt")); String ligne=new String(); while ( fichier.ready()) {//tant que j'ai des lignes ligne=fichier.readLine().split(" ")[2];//je recupere le 3 eme element du fichier {a,b,c,d} par exemple ligne=ligne.substring(1, ligne.length() - 1);//je ne garde que a,b,c,d ligne=ligne.replace(',',' ');//je remplace les , par des espaces if (ligne.contentEquals(myLine))//je compare.... System.out.println(ligne);//si c'est bon, j'affiche.. } fichier.Close(); } }
@+-
Bonsoir Chuka;
Merci d'abord pour ta réponse;
j'ai essayé ta proposition mais ce message s'affiche au niveau de cette ligne :
ligne = ligne.substring(1,ligne.length() - 1 ) ;
" Exception in thread 'main' java.lang.StringIndexOutOfBoundsException: String index out of range: -2
at java.lang.String.Substring "
j'ai essayé de le corriger mais le message reste tjrs , est ce que vous avez une idée sur cet erreur? -
-
-
Salut,
pour tester j'ai pris cela:
1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.2 {2,5,11,12} {a,c,e} {2.4,2.3,2.6}
1.3 {6,8,9,10} {b,c,g} {2.1,2.4,2.7}
Quand tu debug, t'as quoi comme valeur dans ligne?
Car la en gros il nous dis que ligne=""...ce que crois pas...car chez moi j'ai bien eu le résultat voulu!!;)
-
Bonsoir ,
Merci bien chuka , tu m ' as aidé à résoudre un grand problème pour moi , encore merci .
c'est bon ça marche .
svp chuka je veux que lorsque je trouve un égalité j'affiche seulement le premier champ et le dernier c.a.d
si j'ai
1.1 {1,3,4,10} {a,b,d,g} {2.1,2.2,2.5}
1.1 {1,3,4,10} {e,g} {2.1,2.2,2.5}
1.2 {2,5,11,12} {a,c,e} {2.4,2.3,2.6}
1.3 {6,8,9,10} {d,g} {2.1,2.4,2.7}
je veux que le résultat soit comme ça : 1.1 {2.1,2.2,2.5}
1.2 {2.4,2.3,2.6}
SVP chuka ;
Merci d'avance;
-
-
Salut,
peut-etre comme cela..public class Main{ public static void main(String[] args) throws FileNotFoundException, IOException { String myLine = new BufferedReader(new FileReader("c:\\temp\\fich.txt")).readLine();//recupere la ligne de mon premier fichier (ici a b c ) BufferedReader fichier = new BufferedReader(new FileReader("c:\\temp\\feuille.txt")); String[] ligne=new String[4]; while ( fichier.ready()) {//tant que j'ai des lignes ligne=fichier.readLine().split(" "); //je recupere le 3 eme element du fichier {a,b,c,d} par exemple ligne[2]=ligne[2].substring(1, ligne[2].length() - 1);//je ne garde que a,b,c,d ligne[2]=ligne[2].replace(',',' ');//je remplace les , par des espaces if (ligne[2].contentEquals(myLine))//je compare.... System.out.println(lignes[0]+ " "+lignes[3]);//si c'est bon, j'affiche.. } fichier.Close(); } }
J'ai pas testé mais tu dois avoir le gros du truc...en fait passer par un tableau de string...
@+-
-
bonjsoir chuka,
voilà, je dispose de 2 fichiers txt dont le contenu est le suivant:
fichier txt 1 qui contient:
A
Z
G
J
U
K
E
B
V
D
ET fichier txt 2 qui contient:
B
U
Z
K
X
V
N
L
M
E
Je voudrais écrire un programme qui me récupère les caractères (lettres) de chaque fichier dans un tableau correspondant (le tableau 1 ET le tableau 2) , pour ensuite traiter les caractères et produire un tableau 3 qui ne contient que les caractères (lettres) en commun entre les deux tableaux es communs dans fichier 2 et nombre d'occurence des caracterdonc:
Z
B
E
K
U
V
-