Bonjour à tous et à toutes
J’ai commencé que très récemment à apprendre ce merveilleux langage qu’est leRust . Je tente faire un petit programme qui permet de décompresser les formats les plus courants. J’ai réussis à gérer le cas du zip mais le gzip me résiste.
Voici le code où je suis arrivé en première version
extern crate libflate;
use std::io;
use std::fs::File;
use libflate::gzip::Decoder;
fn main() {
let file = File::open("/tmp/source.gz");
let mut dest = File::create("/tmp/dest.txt").unwrap();
let mut decoder = Decoder::new(file).unwrap();
io::copy(&mut decoder, &mut dest).unwrap();
}
Le /tmp/source.gz
contient un unique fichier lorem.txt contenant 40 lignes séparées chacune par une ligne vide. Chaque ligne se termine par un "CRLF".
Mon /tmp/dest.txt
contient bien mes 40lignes mais sans les retours à la ligne, je n’ai qu’un très longue chaînes de caractères.
En vérifiant avecx un éditeur hexadécimale je me suis aperçu de la disparition des CRLF.
J’ai tenté une seconde version:
extern crate libflate;
use std::io;
use std::fs::File;
use libflate::gzip::Decoder;
fn main() {
let file = File::open("/tmp/source.gz");
let mut dest = File::create("/tmp/dest.txt").unwrap();
let decoder = Decoder::new(file).unwrap();
let mut buffer = io::BufReader::new(decoder);
for mut line in io::BufReader::new(decoder).lines() {
let line = line.unwrap();
dest.write(line.as_bytes());
}
}
Mais même problème pas de CRLF
Si vous avez des idées je suis preneur