1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
use std::path::Path;
use std::fs::{File,metadata};
use std::io::{prelude::*,BufReader,BufRead,stdin};
use std::net::Ipv4Addr;
use std::str::FromStr;
fn main() {
let mut entree = String::new(); /*variable entree clavier*/
let mut lenadresseip = 0; /*variable taille du fichier*/
let mut vecip = Vec::new(); /*variable adresse ip */
//verification de l'existence du fichier adresse_ip.txt
let b = Path::new("adresse_ip.txt").is_file();
//si le fichier existe on regarde sa taille
if b {
//utilisation des metadata pour avoir la taille du fichier afin de savoir s'il contient une adresse
let datameta = metadata("adresse_ip.txt").expect("oups, failled");
lenadresseip = datameta.len();
}
// soit le fichier n'existe pas soit il est vide et on en cree un
if !b || lenadresseip == 0 { let mut adresse_ip = File::create("adresse_ip.txt").expect("nop, not work");
println!("Wich IP address ?");
let mut _entree = String::new();
stdin().read_line(&mut entree).expect("I can't read the entry");
write!(adresse_ip,"{}",entree).expect("sorry dude!");
}
//lecture des adresses ip dans le fichier
let reader = BufReader::new(File::open("adresse_ip.txt").expect("I can't do this"));
for line in reader.lines() {
for ip in line.unwrap().split_whitespace() {
//remplissage d'un vecteur contenant les adresses Ip du fichier texte
vecip.push(String::from(ip));
}
}
//petit souci avec l'utilisation du range [0..vecip.len()] par contre avec [1,2,3,4] pas de soucis
for number in [0..vecip.len()]{
let ip_import = Ipv4Addr::from_str(&vecip[number]).expect("no thank's you Margaret");
println!("adresse: {}",ip_import);
}
} |