Couper fichier texte avec StringTokenizer [Résolu]

riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 27 févr. 2009 à 16:16 - Dernière réponse : riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention
- 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.
Afficher la suite 

16 réponses

Répondre au sujet
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 27 févr. 2009 à 18:09
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_DARKSIDIOUS
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 2 mars 2009 à 14:13
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_DARKSIDIOUS
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 27 févr. 2009 à 16:42
0
Utile
Salut,

Montre nous ton code, et nous rectifierons
______________________________________
DarK Sidious
Commenter la réponse de cs_DARKSIDIOUS
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 27 févr. 2009 à 16:54
0
Utile
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());
  }

 }

}
Commenter la réponse de riderfun
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 27 févr. 2009 à 16:58
0
Utile
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...
Commenter la réponse de riderfun
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 27 févr. 2009 à 16:58
0
Utile
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
Commenter la réponse de cs_DARKSIDIOUS
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 27 févr. 2009 à 17:01
0
Utile
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"
Commenter la réponse de riderfun
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 27 févr. 2009 à 17:08
0
Utile
Salut,

Ca j'ai bien compris, mais comment sont délimités tes données ? Espace ou tabulation ?
______________________________________
DarK Sidious
Commenter la réponse de cs_DARKSIDIOUS
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 27 févr. 2009 à 17:59
0
Utile
En fait c'est le fichier récupéré avec la commande "netsh interface show interface >> texte.txt" en ligne de commande sous windows
Commenter la réponse de riderfun
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 27 févr. 2009 à 18:42
0
Utile
Ah ok je vois le truc je n'y avais pas pensé!! super merci
Commenter la réponse de riderfun
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 2 mars 2009 à 14:00
0
Utile
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
Commenter la réponse de riderfun
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 2 mars 2009 à 14:21
0
Utile
Alors la j'ai pas compris...lol mais merci beaucoup!
Commenter la réponse de riderfun
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 2 mars 2009 à 14:24
0
Utile
Et une derniere petite chose...je voulais remplacer le "," par "é" en faisant ça:
String s = inter.replace(

',',
'é');

Mais ça ne change rien...
Commenter la réponse de riderfun
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 2 mars 2009 à 14:31
0
Utile
Salut,

un petit replaceAll à la place du replace...
______________________________________
DarK Sidious
Commenter la réponse de cs_DARKSIDIOUS
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 2 mars 2009 à 14:33
0
Utile
J'ai essayé aussi comme ça :
String s = inter.replaceAll(

",",
"é");
 
 Mais toujours pas...
Commenter la réponse de riderfun
riderfun 98 Messages postés jeudi 8 février 2007Date d'inscription 11 janvier 2010 Dernière intervention - 2 mars 2009 à 14:34
0
Utile
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!
Commenter la réponse de riderfun

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.