Récupérer des données a partir d'un fichier text avec java

souha11 - 10 mai 2013 à 16:48
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
- 15 mai 2013 à 08:48
salut , svp j'ai besoin d'extraire tout les lignes d'un fichier qui correspond au colonne mois=4
exemple de fichier
userID artistID tagID day month
2 52 12 1 4
2 52 14 2 4
2 18 40 5 4
2 19 42 4 5
2 24 44 6 3
2 16 59 8 4
2 17 52 8 2
2 24 51 9 1
et merci d'avance
A voir également:

14 réponses

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
13 mai 2013 à 16:03
while ((line = buff.readLine()) != null) { 
if(ligne.split("[ ]"[4].equals("4")){
System.out.println(line); 
}
1
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
14 mai 2013 à 08:37
C'est que certaines lignes de ton fichier sont vides ou ne contiennent pas 5 champs.
1
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
13 mai 2013 à 09:15
Salut,

Quel est ton problème ?

Récupérer le contenu du fichier ou filtrer les entrées ?
0
bonjour ,Svp mon problème est d'extraire seulement des lignes qui correspond au colonne month =4 .
merci bien a vous
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
13 mai 2013 à 14:06
Une fois que tu récupères ta ligne, tu fais un .split(" ")[4] et tu as le mois, et tu le compares à 4, si c'est le même alors tu le gardes, sinon, tu l'ignores.
0
merci bien ,je vous remercie mais svp est ce que vous pouvez expliquez mieux avec un code svp , je commence avec ce code pour lire le fichier ligne par ligne :

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
public class repartition
{


public static void main(String[] args)
{
String fichier ="user_taggedbookmarks.dat";



try{

BufferedReader buff = new BufferedReader(new FileReader(fichier));

try {
String line;
// Lire le fichier ligne par ligne
// La boucle se termine quand la méthode affiche "null"

while ((line = buff.readLine()) != null) {

System.out.println(line);
}

buff.close(); //Lecture fini donc on ferme le flux
}

catch (IOException e){
System.out.println(e.getMessage());
System.exit(1);
}

}
catch (IOException e) {
System.out.println(e.getMessage());
System.exit(1);
}
}



}

et mercii bien pour votre aide
0
je vous remercie pour votre aide et de votre intéret à mon problème , mais svp cette instruction me donne un erreur , comment je dois corriger est ce que je dois initialiser une matrice et transformer mon fichier a une matrice pour afficher les lignes correspond au colonne month=4 seulement
c'est le code modifier :
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
public class repartition
{


public static void main(String[] args)
{
String fichier ="user_taggedbookmarks.dat";



try{

BufferedReader buff = new BufferedReader(new FileReader(fichier));

try {
String line;
// Lire le fichier ligne par ligne
// La boucle se termine quand la méthode affiche "null"

while ((line = buff.readLine()) != null) {

if(line.split("[ ]"[4].equals("4"))){
System.out.println(line);
}

System.out.println(line);
}

buff.close(); //Lecture fini donc on ferme le flux
}

catch (IOException e){
System.out.println(e.getMessage());
System.exit(1);
}

}
catch (IOException e) {
System.out.println(e.getMessage());
System.exit(1);
}
}



}
erreur est au niveau de cette ligne:
if(line.split("[ ]"[4].equals("4"))):erreur donné :le type de cette expression doit être de type array.
merci encore fois .
0
cs_Palex
Messages postés
31
Date d'inscription
mardi 5 novembre 2002
Statut
Membre
Dernière intervention
16 juin 2013

13 mai 2013 à 22:24
Salut
Y aurai pas une erreur de syntax ici


if(line.split("[ ]"[4].equals("4"))){

Qui devrait etre

if(line.split(" ")[4].equals("4")){

Mais pour etre sur je te conseille de decoupe ton code, donc de faire system.out.println de ce que contient line, ensuite de ce que contient le split, et enfin le resultat de split[4], ca te permettra de verifier ce que tu compares et si tu veux eviter un nullpointer tu peux aussi ecrire :
if("4".equals(line.split(" ")[4]){

Car "4" ne sera jamais null et tu peux aussi verifier la taille de ton split avant de faire le [4] bref des petites choses a ameliorer apres si tu veux rendre ton code robuste...
Bon courage

Palex
0
merci bien a vous , est ce que vous pouvez m'aider avec un code mon problème n'est pas encore résolu j'ai besoin d'extraire seulement les lignes de mon fichier dont le colonne month =4 , et merci encore fois :)
0
cs_Palex
Messages postés
31
Date d'inscription
mardi 5 novembre 2002
Statut
Membre
Dernière intervention
16 juin 2013

13 mai 2013 à 23:03
Je n ai pas trop le temps la pour vous donnez un code, mais celui que vous avez ne compilé pas avec la modification?

Palex
0
ah ok , merci bien pour vous , oui il affiche cette erreur :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
0
cs_Palex
Messages postés
31
Date d'inscription
mardi 5 novembre 2002
Statut
Membre
Dernière intervention
16 juin 2013

14 mai 2013 à 08:48
Effectivement il faut bien lire l exception qui vous dis que vous essayez de lire un élément à une position qui n existe pas dans le tableau...c est pour cela qu il faudrait découper votre code afin de vérifier la taille du tableau après le split
Et si la taille est d au moins 4 vous pouvez récupérer l élément en position 4 voir même 3 car n oubliez pas que dans un tableau le premier élément est le 0 donc l élément 4 sera en position [3] et une fois récupérer vous pouvez faire l equals.
Bon courage

PAM
0
merci , mais j'ai pas bien compris :
svp est ce que vous pouvez me corriger le code donné parce que mon fichier ne contient pas des lignes vides et merci bien .
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
15 mai 2013 à 08:48
Peut être la dernières ligne uniquement, si tu as un dernier retour à la ligne en ouvrant ton fichier, la dernière ligne ne contient que "\n" et elle est traitée comme les autres.

Tu peux mettre if(ligne.length>0) avant de faire le split.
0