Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink Pour verifier la validite de l'adresse regarde la classe InetAddress y a peut-etre des methodes pour tester ça sinon bah à la main tongue

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

nop a écrit :

Il existe une classe qui s'appelle StringTokenizer faite decouper les strings en fonction d'un motif dans ton cas l'espace wink Pour verifier la validite de l'adresse regarde la classe InetAddress y a peut-etre des methodes pour tester ça sinon bah à la main tongue

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

obiwankennedy a écrit :

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

nop a écrit :

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