Couper fichier texte avec StringTokenizer

Résolu
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010
- 27 févr. 2009 à 16:16
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010
- 2 mars 2009 à 14:34
Bonjour, je souhaiterai récupérer une partie d'un texte dans un fichier txt
qui se présente comme ça :


<hr />

tat admin    tat          Type            Nom de l'interface
-------------------------------------------------------------------------
Activ‚         Connect‚       D‚di‚            Connexion au r‚seau local 2
Activ‚         D‚connect‚     D‚di‚            Connexion r‚seau sans fil

<hr />Et je voudrais récupérer les "Connexion au réseau local2" et "Connexion au réseau sans fil",
j'arrive à le récupérer et à l'afficher mais StringTokenizer me le découpe entièrement.
ce serait sympa si tu pouviez me donner quelques pistes...sachant que le fichier peut changer selon le pc sur lequel il se trouve...
Merci par avance.

16 réponses

cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
27 févr. 2009 à 18:09
Salut,

Et bien disont que tu as toujours 2 espaces entre l'avant dernière et la dernière colonne, ca donnerai un truc comme ceci  (à adapter et corriger si nécessaire bien entendu) :

import java.io.*;
import java.util.StringTokenizer;public class ReadFile {
 public static void main(String[] args) {
  String chaine = "";
  String fichier = "texte.txt";
  
  // lecture du fichier texte
  try {
   InputStream ips = new FileInputStream(fichier);
   InputStreamReader ipsr = new InputStreamReader(ips);
   BufferedReader br = new BufferedReader(ipsr);
   String ligne;

   while ((ligne = br.readLine()) != null) {

    String derniereColonne = ligne.Substring(ligne.lastIndexOf("  "));

    System.out.println(derniereColonne);

   }
   br.close();
  } catch (Exception e) {
   System.out.println(e.toString());
  }

 }

}
______________________________________
DarK Sidious
3
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
2 mars 2009 à 14:13
Salut,

Comme ceci :

boolean first = true;
while ((ligne = br.readLine()) !=
null ) {if (!first) {

String derniereColonne = ligne.substring(ligne

.lastIndexOf(

" ") + 1);String inter = derniereColonne.substring(derniereColonne

.lastIndexOf(

"-") + 1);System.

out .println(inter);
}
first = false;
}

______________________________________
DarK Sidious
3
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
27 févr. 2009 à 16:42
Salut,

Montre nous ton code, et nous rectifierons
______________________________________
DarK Sidious
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

27 févr. 2009 à 16:54
Voici mon code:


<hr />



import java.io.*;
import java.util.StringTokenizer;public class ReadFile {
 public static void main(String[] args) {
  String chaine = "";
  String fichier = "texte.txt";
  
  // lecture du fichier texte
  try {
   InputStream ips = new FileInputStream(fichier);
   InputStreamReader ipsr = new InputStreamReader(ips);
   BufferedReader br = new BufferedReader(ipsr);
   String ligne;

   while ((ligne = br.readLine()) != null) {
    StringTokenizer st = new StringTokenizer(ligne);
    while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
     
    }
    System.out.println(ligne);
    chaine += ligne + "\n";
   }
   br.close();
  } catch (Exception e) {
   System.out.println(e.toString());
  }

 }

}
0

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

Posez votre question
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

27 févr. 2009 à 16:58
J'ai pensé remplir un tableau et après récupérer les données qui m'interressent mais je ne sais pas comment faire puis à savoir s'il n'y a pas une méthode plus simple...
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
27 févr. 2009 à 16:58
Salut,

Ton soucis est là : StringTokenizer st = new StringTokenizer(ligne);

Par défaut, le StringTokenizer va découper les espaces... pas ce que tu veux apparemment vu que c'est les tabulations que tu veux découper. Il te suffit de rajouter en argument la tabulation :
StringTokenizer st = new StringTokenizer(ligne, "\t");
______________________________________
DarK Sidious
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

27 févr. 2009 à 17:01
Merci mais ça me l'affiche comme si je n'avais pas fait de Tolenizer...ce que je veux c'est juste récupérer les chaines comme
: "Connexion au réseau local 2" et "Connexion au réseau sans fil"
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
27 févr. 2009 à 17:08
Salut,

Ca j'ai bien compris, mais comment sont délimités tes données ? Espace ou tabulation ?
______________________________________
DarK Sidious
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

27 févr. 2009 à 17:59
En fait c'est le fichier récupéré avec la commande "netsh interface show interface >> texte.txt" en ligne de commande sous windows
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

27 févr. 2009 à 18:42
Ah ok je vois le truc je n'y avais pas pensé!! super merci
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

2 mars 2009 à 14:00
Re,
j'ai un autre petit problème qui doit être tout bête là en fait j'ai reussis à faire ce que je voulais sauf qu'il reste un dernier petit truc:
public

class ReadFile {

public
static
void main(String[] args) {

// Création du fichier texte avec le batch

try {

final Runtime rt = Runtime. getRuntime ();rt.exec(

"interface.bat");}

catch (IOException ex) {ex.printStackTrace();

System.

out.println(
"Erreur Création Interface.bat!");}

Thread.currentThread();

try {Thread.sleep(500);

}

catch (InterruptedException e1) {e1.printStackTrace();

}

// Lecture du fichier texteString fichier =

"interface.txt";
try {InputStream ips new FileInputStream(fichier);InputStreamReader ipsr
new InputStreamReader(ips);BufferedReader br new BufferedReader(ipsr);String ligne br.readLine();

while ((ligne = br.readLine()) !=
null ) {String derniereColonne = ligne.substring(ligne

.lastIndexOf(

" ") + 1);String inter = derniereColonne.substring(derniereColonne

.lastIndexOf(

"-") + 1);System.

out.println(inter);

}

br.close();

}

catch (Exception e) {System.

out.println(e.toString());}

}
voila le code et en fait, j'ai ça comme résultat:

Nom de l'interface

Connexion au r‚seau local 2

Connexion r‚seau sans fil

Alor comment je pourrai virer le "Nom de l'interface"..Merci
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

2 mars 2009 à 14:21
Alors la j'ai pas compris...lol mais merci beaucoup!
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

2 mars 2009 à 14:24
Et une derniere petite chose...je voulais remplacer le "," par "é" en faisant ça:
String s = inter.replace(

',',
'é');

Mais ça ne change rien...
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
4 mars 2013
131
2 mars 2009 à 14:31
Salut,

un petit replaceAll à la place du replace...
______________________________________
DarK Sidious
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

2 mars 2009 à 14:33
J'ai essayé aussi comme ça :
String s = inter.replaceAll(

",",
"é");
 
 Mais toujours pas...
0
riderfun
Messages postés
98
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
11 janvier 2010

2 mars 2009 à 14:34
Ok j'ai trouvé c'est en fait qu'il doit être codé autrement je sais pas je l'ai récupérer dans mon fichier texte en copier coller et ça marche...alors que tapé directement du clavier...ben non enfin voila Merci encore!
0