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 130
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 130
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 130
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 130
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 130
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 130
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
Rejoignez-nous