LoginSignup
0
1

rustのzipfileでファイルが欠損する

Last updated at Posted at 2023-09-04

結論

writeじゃなくてwrite_allを使え

rustのzipfileでファイルが欠損する

let mut buf = Vec::new();
let _ = file.read_to_end(&mut buf);
let _ = zip.start_file(file.name(), options);
let _ = zip.write(&buf).unwrap();

こんな感じのコードでJpegをZip圧縮していたら,Jpegファイルが欠損している.画像処理でまずったかと思ったら,zipfileの書き込みがおかしかった.

原因

そもそもwriteはすべて書き込むことが保証されていないとリファレンスに書かれている.後からよく考えたら戻り値が書き込まれたバイト数となっている時点でおかしいと気づくべきだった.

write_allはOkなら書き込みが完了していることが保証されている.

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1