< 返回版块

sharkLoc 发表于 2022-08-03 21:46

Tags:flate2, gzip, file

在lib.rs上查到的下载量最大的处理压缩文件的库flate2,翻了下api,没看到文件按照行遍历方法,全是一次性读入内存的,想问下大家,对于这种情况一般都是怎么处理呢?

评论区

写评论
作者 sharkLoc 2022-08-09 14:35

好的,感谢

--
👇
elsejj: 对于支持流模式的压缩格式,如 gz ,按流取读就好了

use std::io::{prelude::*, BufReader};
use std::io;
use flate2::read::GzDecoder;

fn main() -> io::Result<()> {

    let fp = std::fs::File::open("demo.toml.gz")?;
    let gz = GzDecoder::new(fp);
    let rd = BufReader::new(gz);

    for line in rd.lines() {
        if let Ok(line) = line {
            println!("{}", line);
        }else{
            break;
        }
    }
    Ok(())
}
elsejj 2022-08-04 09:11

对于支持流模式的压缩格式,如 gz ,按流取读就好了

use std::io::{prelude::*, BufReader};
use std::io;
use flate2::read::GzDecoder;

fn main() -> io::Result<()> {

    let fp = std::fs::File::open("demo.toml.gz")?;
    let gz = GzDecoder::new(fp);
    let rd = BufReader::new(gz);

    for line in rd.lines() {
        if let Ok(line) = line {
            println!("{}", line);
        }else{
            break;
        }
    }
    Ok(())
}
作者 sharkLoc 2022-08-03 21:53

不想这么做,应该有其他办法,只是我不知道。

--
👇
Neutron3529: 一般先直接解压到硬盘?

Neutron3529 2022-08-03 21:49

一般先直接解压到硬盘?

1 共 4 条评论, 1 页