Récupérer des données a partir d'un fichier text avec java
souha11
-
10 mai 2013 à 16:48
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 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
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020369 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.
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
}
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"
}
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 .
cs_Palex
Messages postés31Date d'inscriptionmardi 5 novembre 2002StatutMembreDernière intervention16 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
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 :)
cs_Palex
Messages postés31Date d'inscriptionmardi 5 novembre 2002StatutMembreDernière intervention16 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
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 .
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020369 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.