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 次 |
最近记录: |