Gre*_*reg 3 csv gzip rust gzipfile
如何遍历包含单个文本文件 (csv) 的 gzip 文件?
搜索 crates.io 我发现flate2有以下解压代码示例:
extern crate flate2;
use std::io::prelude::*;
use flate2::read::GzDecoder;
fn main() {
let mut d = GzDecoder::new("...".as_bytes()).unwrap();
let mut s = String::new();
d.read_to_string(&mut s).unwrap();
println!("{}", s);
}
Run Code Online (Sandbox Code Playgroud)
如何流式传输 gzip csv 文件?
对于流 io 操作,rust 具有Read和Write特征。要按行迭代输入,您通常需要BufRead特征,您始终可以通过将Read实现包装在BufReader::new.
flate2已经以这些特征运作;GzDecoder实施Read,并GzDecoder::new采取任何实施Read。
解码标准输入示例(当然在操场上效果不佳):
extern crate flate2;
use std::io;
use std::io::prelude::*;
use flate2::read::GzDecoder;
fn main() {
let stdin = io::stdin();
let stdin = stdin.lock(); // or just open any normal file
let d = GzDecoder::new(stdin).expect("couldn't decode gzip stream");
for line in io::BufReader::new(d).lines() {
println!("{}", line.unwrap());
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用通常的(“没有 gzip”)逻辑解码您的行;也许通过采取任何输入实现BufRead.
| 归档时间: |
|
| 查看次数: |
2338 次 |
| 最近记录: |