imilou
Messages postés13Date d'inscriptionsamedi 14 mai 2011StatutMembreDernière intervention 3 août 2012
-
22 juil. 2012 à 13:38
imilou
Messages postés13Date d'inscriptionsamedi 14 mai 2011StatutMembreDernière intervention 3 août 2012
-
3 août 2012 à 17:54
Bonjour,
Je suis débutante dans le programmation en java et je cherche à savoir comment extraire des données d'un fichier texte pour les mettre ensuite dans une base de données.J'ai cherché dans les forums mais j'arrive pas à trouvé ce que je cherche.Mon but c'est d'extraire par exemple la ligne encadrée en rouge puis la mettre dans un tableau.SVP j'ai besoin de votre aide et je serais vraiment très reconnaissante.Ci joint vous trouveriez une partie du contenu de mon fichier texte qui a cette structure et ki se repete plusieurs fois dans le fichier.Merciiiiii
BufferedReader buff = new BufferedReader(new FileReader(filePath));
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);
// ajouter ces 3 lignes <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
int index = line.indexOf(" BTS"); // partie commune des lignes à garder
if(index > 0) // si on trouve "BTS"
garder+= line + "|";
}
// Ajouter les lignes qui suivent ... <<<<<<<<<<<<<<<<<<<<<<<<<
//System.out.println("\n\ngarder = " + """ + garder + """);
Pattern pattern = Pattern.compile("\\|"); // import java.util.regex.Pattern;
String[] tabGarder = pattern.split(garder); // pour mettre les lignes conservées
// dans le tableau tabGarder
System.out.println("");
// Résultat:
for(int i = 0; i < tabGarder.length; i++)
{
String lGardee = tabGarder[i];
System.out.println(lGardee);
Maintenant je cherche à récuperer dans une autre table les données de cette partie plus précisement les lignes qui contiennent les entiers,comment faire??
{
String lesLignes = ""; // les lignes à traiter
try
{
scanner = new Scanner(new File("cellIdentifier.txt"));
try
{
while (scanner.hasNextLine())
{
String line = scanner.nextLine();
//if(line.startsWith("CELL IDENTIFIER")) NEIGHBOUR CELL
if(line.startsWith("NEIGHBOUR CELL"))
{
// Lire la ligne suivant "NEIGHBOUR CELL..."
line = scanner.nextLine();
// Et la première contenant les entiers
while (scanner.hasNextLine())
{
line = scanner.nextLine();
if(line.startsWith("PART"))
break;
lesLignes += line;
}
String[] lesItems = lesLignes.split(" +"); // le plus de (" +") permettrait
// d'accepter plusieurs espaces.
for(String it : lesItems) System.out.println(it);
break;
}
}
System.out.println("");
}
finally
{
// dans tous les cas, on ferme nos flux
scanner.close();
}
}
catch (IOException ioe)
{
//e.printStackTrace();
System.out.println("Erreur --" + ioe.toString());
}
}
Le résultat est dans le tableau lesItems mais avec le "-".
imilou
Messages postés13Date d'inscriptionsamedi 14 mai 2011StatutMembreDernière intervention 3 août 2012 28 juil. 2012 à 23:56
Merciii Bien damino vous m'avez bcp aidé, j'ai utilisé le code ke vous m'avez écrit le probleme k'il n'affiche pas les lignes apres NEIGHBOUR CELL, il sort de try et affiche le message System.out.println("") ke j'ai changé avec System.out.println("eeee") pour pouvoir voir si il fait le try ou nn.
une 2ieme kestion: j'ai testé le meme code pour extraire CELL IDENTIFIER est ça marché bien mais juste pour une ligne de CELL IDENTIFIER alors ke mon fichier contient plusieurs CELL IDENTIFIER.comment faire?
imilou
Messages postés13Date d'inscriptionsamedi 14 mai 2011StatutMembreDernière intervention 3 août 2012 29 juil. 2012 à 16:21
Bonjour,
Le probleme de l'afficahge des lignes apres NEIGHBOUR CELL est résolu.En effet je dois mettre 2 espaces puis NEIGHBOUR CELL dans if(line.startsWith(" NEIGHBOUR CELL")).
Il me reste comment pouvoir extraire les lignes concernées sur tout le fichier puisk le le code en haut permet de le faire juste sur la structure alors ke je possede un fichier qui contient cette structure pluuusieurs fois et merciiiiii bcp.
Pour CELL IDENTIFIER et INTRA (S'il y a toujours INTRA après les lignes CELL ...) il suffirait de faire comme pour NEIGHBOUR CELL et PART et remplacer NEIGHBOUR CELL et PART par CELL IDENTIFIER et INTRA.
imilou
Messages postés13Date d'inscriptionsamedi 14 mai 2011StatutMembreDernière intervention 3 août 2012 29 juil. 2012 à 23:35
Oui c'est deja fait et ça marche tres bien merciii bcp. Ce ke je cherche maintenaint c'est de pouvoir recuperer les lignes de CELL IDENTIFIER pour mon fichier ki contient plusieurs fois la structure déclarée en haut. Le code ke j'ai me permet de recuperer juste la premiere structure du fichier alors k'il en reste bcp.
Regarde si ce code qui permet de traiter plusieurs groupes "CELL IDENTIFIER" / "INTRA" et "NEIGHBOUR" / "PART" te conviendrait:
{
String lesLignesNeigh = ""; // les lignes à traiter
String lesLignesCell = ""; // les lignes à traiter
String[] itemsNeigh = new String[1];
String[] itemsCell = new String[1];
try
{
scanner = new Scanner(new File("report.txt"));
try
{
while (scanner.hasNextLine())
{
String line = scanner.nextLine();
line = line.trim(); // supprimer les éventuels espaces en début et fin de ligne
//if(line.startsWith("CELL IDENTIFIER")) NEIGHBOUR CELL
if(line.startsWith("NEIGHBOUR CELL"))
{
// Lire la ligne suivant "NEIGHBOUR CELL..."
line = scanner.nextLine(); // si "NEIGHBOUR CELL..." est toujours suivie de la
// la ligne "titre des colonnes"
// Et la première contenant les entiers
while (scanner.hasNextLine())
{
line = scanner.nextLine();
if(line.startsWith("PART"))
break;
lesLignesNeigh += line + " ";
}
itemsNeigh = lesLignesNeigh.split(" +"); // le plus de (" +") permettrait
// d'accepter plusieurs espaces.
System.out.println("\n\nNEIGHBOUR CELL");
for(String itn : itemsNeigh) System.out.println(itn);
}
else
if(line.startsWith("CELL IDENTIFIER"))
{// Lire la ligne suivant "CELL IDENTIFIER"
line = scanner.nextLine(); // si "CELL IDENTIFIER" est toujours suivie de la
// la ligne "titre des colonnes"
// Et la première contenant les entiers
while (scanner.hasNextLine())
{
line = scanner.nextLine();
if(line.startsWith("INTRA"))
break;
lesLignesCell += line + " ";
}
itemsCell = lesLignesCell.split(" +");
System.out.println("\n\nCELL IDENTIFIER");
for(String itc : itemsCell) System.out.println(itc);
}
}
System.out.println("");
}
finally
{
// dans tous les cas, on ferme nos flux
scanner.close();
}
}
catch (IOException ioe)
{
//e.printStackTrace();
System.out.println("Erreur --" + ioe.toString());
}
}
Mais attention à la taille, si c'est très gros, il vaudrait mieux créer deux fichiers texte, contenant l'un les "CELL IDENTIFIER" et l'autre les "NEIGHBOUR CELL"
imilou
Messages postés13Date d'inscriptionsamedi 14 mai 2011StatutMembreDernière intervention 3 août 2012 30 juil. 2012 à 18:40
Après avoir extrait les données du fichier je dois les mettre dans une base de données MySQl.Comment faire pour stocker les lignes de CELL IDENTIFIER dans la base de données et merciii bien.
imilou
Messages postés13Date d'inscriptionsamedi 14 mai 2011StatutMembreDernière intervention 3 août 2012 1 août 2012 à 03:38
Salut j'ai modifié le code un peu pour mettre chaque ligne dans un string puis le decomposer afin de separer chak champs de la meme ligne à part mais je sais pas comment mettre chaque champs de cell identifier dans la base de données??help please !!!
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Cellule1 {
public static void main(String[] args){
{
String lesLignes = ""; // les lignes à traiter
try
{
Scanner scanner = new Scanner(new File("C:/Users/Desktop/report.txt"));
try
{
while (scanner.hasNextLine())
{
String line = scanner.nextLine();
//if(line.startsWith("CELL IDENTIFIER")) NEIGHBOUR CELL
if(line.startsWith(" NEIGHBOUR CELL"))
{
// Lire la ligne suivant "NEIGHBOUR CELL..."
line = scanner.nextLine();
// Et la première contenant les entiers
while (scanner.hasNextLine())
{
line = scanner.nextLine();
if(line.startsWith("PART "))
break;
lesLignes += line;
}
String[] lesItems = lesLignes.split(" +"); // le plus de (" +") permettrait
// d'accepter plusieurs espaces.
for(String it : lesItems) System.out.println(it);
for(int i = 0; i < lesItems.length; i++)
{
String la = "";
la = lesItems[i];
System.out.println(la);
String[] decompose = la.split(" +");
}
break;
}
}
}
finally
{
// dans tous les cas, on ferme nos flux
scanner.close();
}
}
catch (IOException ioe)
{
//e.printStackTrace();
System.out.println("Erreur --" + ioe.toString());
}
}
}
}
imilou
Messages postés13Date d'inscriptionsamedi 14 mai 2011StatutMembreDernière intervention 3 août 2012 3 août 2012 à 17:54
Salut
J'ai pu mettre les lignes de NEIGH CELL dans une variable string puis j'ai decoupé le ligne en des chaines pour pouvoir mettre chaque champs de la meme ligne dans une variable.Cette table est bien faite mais je me bloque sur une chose,Je cherche à mettre le champ de CI dans CELL IDENTIFIER dans une autre variable de NEIGHBOUR CELL parce ke en fait chaque NEIGBHOUR CELL est issue d'un et un seul CELL IDENTIFIER.La structure du fichier est déjà définit dans le forum:ligne qui commence par un CELL IDENTIFER puis suivi de la liste de NEIGHBOUR CELL,la structure se repete dans le fichier.
Voici le code
//La classe NEIGHBOUR_CELL
public class NEIGHBOUR_CELL{
String MCC;
String MNC;
String LAC;
String CI;
String TO_OK;
String TO_FAIL;
String FROM_OK;
String FROM_FAIL;
BufferedReader buff = new BufferedReader(new FileReader(filePath));
try {
String line;
// Lecture du fichier ligne par ligne. Cette boucle se termine
// quand la méthode retourne la valeur null.
while ((line = buff.readLine()) != null) {
line = line.trim();
if(line.startsWith("NEIGHBOUR CELL"))
{
line = buff.readLine();
while ((line = buff.readLine()) != null) {
if(line.startsWith("PART"))
break;
StringTokenizer tok=new StringTokenizer(line," ");
int n = 0;
while(tok.hasMoreTokens()){//repete la boucle tant que il y a un espace
chaine1[n]=tok.nextToken();//nexttoken extrait des sous-chaine
n++;
}
}
}
}
finally {
// dans tous les cas, on ferme nos flux
buff.close();
}
} catch (IOException ioe) {
// erreur de fermeture des flux
System.out.println("Erreur --" + ioe.toString());
}
//Fin du programme