Mon problème est que StringTokenizer
semble en lecture seule la première ligne de ip.txtJava StringTokenizer lecture seule première ligne
Ce que je suis en train de faire est de charger une liste d'adresses IP de « ip.txt » et enregistrez-le dans un tableau pour pinger automatiquement les appareils sur mon réseau pour voir si leur en ligne. Peu importe ce que j'essaie, je ne peux pas obtenir plus que la première ligne de "ip.txt" dans le tableau. Mon délimiteur est "//" et le nom de l'adresse IP est également stocké dans le fichier txt
. J'ai inclus le code et un échantillon du fichier texte.
Merci d'avance !!
public class IP {
public static IP[] ips = new IP[100];
public static int total_ips=0;
String name;
String ip1;
String ip2;
String ip3;
String ip4;
String fullIP;
public static void read_ips() throws FileNotFoundException{
FileInputStream fstream1 = new FileInputStream("ip.txt");
String line;
String delimiter = "//";
StringTokenizer tokenizer;
BufferedReader input = null;
try {
int i = 0;
int totalIps = 0;
input = new BufferedReader(new InputStreamReader(fstream1));
line = input.readLine();
//outer while
while(line != null) {
tokenizer = new StringTokenizer(line, delimiter);
while(tokenizer.hasMoreElements()) {//process tokens in line
ips[i] = new IP();
ips[i].name = tokenizer.nextToken();
ips[i].ip1 = tokenizer.nextToken();
ips[i].ip2 = tokenizer.nextToken();
ips[i].ip3 = tokenizer.nextToken();
ips[i].ip4 = tokenizer.nextToken();
ips[i].fullIP = ips[i].ip1+"."+ips[i].ip2+"."+ips[i].ip3+"."+ips[i].ip4;
i++;
totalIps = i;
System.out.println(line);
}
line = input.readLine(); //next line
}//close outer while
total_ips = totalIps; // count of total cars
System.out.println("total_ips after i++ "+total_ips);
}catch (FileNotFoundException e) {
System.out.println("Unable to open file " + fstream1);
} catch (IOException e) {
System.out.println("Unable to read from file " + fstream1);
}finally {
// Close the file
try {
if (input != null)
input.close();
} catch (IOException e) {
System.out.println("Unable to close file " + fstream1);
}
}
}
}
Et voici un exemple de ip.txt
Desktop1//192//168//1//127//
Desktop2//192//168//1//128//
Desktop3//192//168//1//129//
Juste un rappel de ce que les Javadocs disent StringTokenizer. "... _StringTokenizer est une classe héritée qui est conservée pour des raisons de compatibilité, bien que son utilisation soit déconseillée dans le nouveau code.Toute personne qui recherche cette fonctionnalité utilise à la place la méthode split de String ou le package java.util.regex._. .. " –
J'ai essayé d'exécuter votre code sur ma machine et ça fonctionne bien. Il lit tout le fichier ip.txt. –