use std::{
    io::{BufReader, Read, Write},
    path::PathBuf,
};
fn main() {
    let mut buf = [0; 1024];
    let response = ureq::get("https://ts1.cn.mm.bing.net/favicon.ico")
        .call()
        .unwrap();
    let content_length = response
        .header("Content-Length")
        .unwrap_or("0")
        .parse::<usize>()
        .unwrap_or(0);
    println!("{}", content_length);
    let mut reader = BufReader::new(response.into_reader());
    let write_path = PathBuf::from("favicon.ico");
    if write_path.is_file() {
        let _ = std::fs::remove_file(&write_path);
    }
    let mut file = std::fs::OpenOptions::new()
        .append(true)
        .create_new(true)
        .open(write_path)
        .unwrap();
    let mut read_length = 0;
    loop {
        let length = reader.read(&mut buf).unwrap();
        file.write_all(&buf[0..length]).unwrap();
        read_length = read_length + length;
        if content_length > 0 && length != 0 {
            let progress = read_length as f64 / content_length as f64;
            println!("{}%", progress * 100.0);
        }
        if length == 0 {
            break;
        }
    }
}
                     
                     最后修改:2024 年 03 月 02 日
                 
© 允许规范转载