rust - 如何使用固定大小的数组分段下载文件?
问题描述
我想从 URL 下载文件。下面的代码可以正常工作,但是当我在中Vec
替换[u8; 4 * 1024]
和read_to_end
时,我可以无限读取相同的信息。我应该如何更改我的代码以使用固定大小的数组部分下载文件?read
loop
use std::env;
use std::fs::{File, OpenOptions};
use std::io::{BufRead, BufReader, BufWriter, Read, Result, Write};
//[dependencies]
//reqwest = "0.8.0"
extern crate reqwest;
fn main() -> Result<()> {
// All URL's are stored in file passed as a command line argument
let args: Vec<String> = env::args().collect();
let fin = File::open(&args[1])?;
let buf: &mut Vec<u8> = &mut Vec::new();
let mut readed: usize;
for line in BufReader::new(fin).lines() {
let unwrapped = &line.unwrap();
let mut options = OpenOptions::new();
// Create an output file with a name equal to the last domain
let fout = options
.write(true)
.create(true)
.open(&unwrapped[unwrapped.rfind('/').unwrap() + 1..])?;
let mut writer = BufWriter::new(&fout);
readed = reqwest::get(unwrapped).unwrap().read_to_end(buf).unwrap();
println!("{}", readed); // Just to know how many read
writer.write(buf)?;
// Close the file and clear "buf" to ensure that
// the subsequent reading is correct
writer.flush()?;
buf.clear();
}
Ok(())
}
解决方案
推荐阅读
- clojure - 将使用 Figwheel 编译的 JS 文件包含到构建的 Uberjar 中
- laravel - Laravel 包/服务提供者添加
- python - 在 python 中使用 sys.argv 读取文件
- python - 无法访问函数内的变量?
- php - 当使用“oci_fetch”检查数组在PHP中是否为非空时,循环不显示第一项
- r - 使用 ggplot2 生成过滤列的条形图
- python - 如何将多个csv文件聚集在一个文件目录中
- python-3.x - 在 python 中使用 smtplib 发送邮件时出现错误(11004,'getaddrinfo failed')
- python - 数据框列与另一个数据框列的总和 Python 给出 NaN
- c# - 指定 xUnit Theory 测试的返回值