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));
}
}
}
A voir également:
- Comparaison des èlèments de 2 fichiers .txt
- Supercopier 2 - Télécharger - Gestion de fichiers
- Renommer des fichiers en masse - Guide
- Photoshop elements gratuit - Télécharger - Retouche d'image
- Fichiers epub - Guide
- Explorateur de fichiers - Guide
3 réponses
Salut,
je sais pas si j'ai bien compris..mais regarde ce code..peut etre tu peux t'en inspirer:
@+
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();
}
}
@+
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!!;)
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;
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..
J'ai pas testé mais tu dois avoir le gros du truc...en fait passer par un tableau de string...
@+
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
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
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?
je veux ecirire un programme java capable de reconnaitre les mots composés d'un texte donné. En fait il faut faire une comparaison entre ce texte et un glossaire donné pour pouvoir detecter les mots clés dans le texte en se basant sur le glossaire. pouvez vous m'aidez s'ils vous plait???