#1 Le 01/04/2007, à 19:26
- simpson
[Java]decomposer les lignes d'un fichier
Bonjour,
j'aimerai savoir comment faire pour décomposer un fichier de ce type :<IP> <PORT>
127.0.0.1 2000
127.0.0.1 3000
127.0.0.1 4000
Je sais comment parcourir un fichier et mettre chaque ligne dans un String ligne mais ce que je voudrais c'est analyser la ligne qui a été récupéré pour avoir l'ip et le port.
De plus, comment verifier que l'ip a été écrite correctement.
Merci
#2 Le 01/04/2007, à 20:19
- tiky
Re : [Java]decomposer les lignes d'un fichier
Je pense que le Java intègre des expressions régulières ( je connais pas Java ), cherche donc de ce côté là.
Dernière modification par tiky (Le 01/04/2007, à 20:21)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#3 Le 01/04/2007, à 21:58
- nop
Re : [Java]decomposer les lignes d'un fichier
Il existe une classe qui s'appelle StringTokenizer faite decouper les strings en fonction d'un motif dans ton cas l'espace Pour verifier la validite de l'adresse regarde la classe InetAddress y a peut-etre des methodes pour tester ça sinon bah à la main
Dernière modification par nop (Le 01/04/2007, à 22:16)
Hors ligne
#4 Le 02/04/2007, à 06:57
- aitina
Re : [Java]decomposer les lignes d'un fichier
bonjour tout le Monde
Sinon à la main:
Tu construits un simple tableau ou tu places tes données...et ensuite tu fais une boucle pour l'interroger...
Tu mets un code condition de type if et tu obtiens ta réponse...
je pense qu'il doit exister des routines toutes faites pour ça...
Cordialement
#5 Le 02/04/2007, à 06:58
- aitina
Re : [Java]decomposer les lignes d'un fichier
bonjour tout le Monde
Sinon à la main:
Tu construits un simple tableau ou tu places tes données...et ensuite tu fais une boucle pour l'interroger...
Tu mets un code condition de type if et tu obtiens ta réponse...
je pense qu'il doit exister des routines toutes faites pour ça...
Cordialement
#6 Le 02/04/2007, à 12:08
- obiwankennedy
Re : [Java]decomposer les lignes d'un fichier
String montableau[];
String ip;
int port;
tanque( je_peux_lire_une_ligne_dans_le_fichier){
montableau=ligne_de_ton_fichier.slip(' ');
ip=montableau[0];
port=Integer.parseInt(montableau[1]);
}
Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam
Hors ligne
#7 Le 02/04/2007, à 12:23
- iuchiban
Re : [Java]decomposer les lignes d'un fichier
Il existe une classe qui s'appelle StringTokenizer faite decouper les strings en fonction d'un motif dans ton cas l'espace Pour verifier la validite de l'adresse regarde la classe InetAddress y a peut-etre des methodes pour tester ça sinon bah à la main
Effectivement, le StringTokenizer permet de découper une String suivant un Token, ici un espace.
Dans la DOC JAVA :
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
Donne en sortie :
this
is
a
test
C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.
Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.
Hors ligne
#8 Le 02/04/2007, à 21:39
- simpson
Re : [Java]decomposer les lignes d'un fichier
String montableau[];
String ip;
int port;
tanque( je_peux_lire_une_ligne_dans_le_fichier){montableau=ligne_de_ton_fichier.slip(' ');
ip=montableau[0];
port=Integer.parseInt(montableau[1]);
}
Dans l'exemple, le split ne fait ça que pour un espace mais s'il y a plusieurs espaces, comment faire ?
127.0.0.1 2000
Merci
#9 Le 03/04/2007, à 06:50
- obiwankennedy
Re : [Java]decomposer les lignes d'un fichier
ben, Il devrait quand meme sliper le truc. Je ne sais pas, quel comportement il a, mais bon grosso modo: je pense qu'il doit ou te renvoyer 2 chaines avec la 2eme plein d'espaces donc dans ce cas il suffit de les supprimer par un
ma_chaine=ma_chaine.replaceAll(" ",""); //voir la doc pour la syntaxe exacte
si non, il doit peut être te renvoyer un tableau avec plein de chaines vides donc l'ideal c'est d'afficher ton tableau et de voir.
Dernière modification par obiwankennedy (Le 03/04/2007, à 10:47)
Dans mes logiciels, j'écris ton nom.
SGNGD: SvgGd is Not GD
Rolisteam
Hors ligne
#10 Le 03/04/2007, à 07:50
- iuchiban
Re : [Java]decomposer les lignes d'un fichier
Oui, ou bien
chaine = chaine.trim()
Ca enlève tous les espaces et caractères spéciaux je crois (\n, \t, etc.)
C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.
Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.
Hors ligne
#11 Le 03/04/2007, à 08:52
- all
Re : [Java]decomposer les lignes d'un fichier
String chaine = "127.0.0.1 8080";
String[] mesSousChaines; //à ne pas confondre avec mon suchen hein
mesSousChaines = chaine.split("[ ]");
String ip = mesSousChaines[0];
String port = mesSousChaines[1];
System.out.println("ip : "+ip);
System.out.println("port : "+port);
Ensuite pour vérifier l'ip tu fais idem.
tu decoupes ta chaine ip selon ton séparateur .
tu comptes le nombre de sous chaine (taille du tableau résultant )
pour chaque sous-chaine tu vérifie que ce soit bien compris entre 0 et 255
En espérant avoir répondu à ta question
Dernière modification par all (Le 03/04/2007, à 08:54)
Hors ligne
#12 Le 03/04/2007, à 16:29
- simpson
Re : [Java]decomposer les lignes d'un fichier
Pour l'IP, j'ai fait comme ceci :
while((line=hosts.readLine())!=null){
String myString [] = line.split(" ");//contient l'IP et le port
String s[] = myString[0].split(".");//decompose l'IP obtenue
int t[] = new int[s.length];
System.out.println(myString[0]);
System.out.println(myString[1]);
System.out.println(s.length + "");
//Verfie que l'IP est correcte
for(int i=0; i<s.length; i++){
t[i] = Integer.parseInt(s[i]);
if(t[i]<0 || t[i]>255){
System.out.println("les nombres doivent etre compris entre 0 et 255");
System.exit(-1);
hosts.close();
return false;
}
}
//IP correctement ecrite
String ip = myString[0];
//Recupere le port
int port = Integer.parseInt(myString[1]);
Lorsque j'appelle :
System.out.println(s.length + "");
Ca m'indique que le tableau s est vide.
Pourquoi ?
#13 Le 03/04/2007, à 22:28
- nop
Re : [Java]decomposer les lignes d'un fichier
StringTokenizer c'est tellement plus propre
Hors ligne
#14 Le 04/04/2007, à 10:56
- all
Re : [Java]decomposer les lignes d'un fichier
StringTokenizer c'est tellement plus propre
Completement d'accord avec toi, c'est pour ça que déjà dans la javadoc 1.4.2 il y :
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.
Hors ligne
#15 Le 07/04/2007, à 11:19
- nop
Re : [Java]decomposer les lignes d'un fichier
Effectivement autant pour moi tu viens de m'apprendre quelque chose merci de l'info. J'avais jamais fait attention à ça.
Hors ligne