1use std::fs::File;
2use std::io::Write;
3use std::os::unix::fs::PermissionsExt;
4
5use zip::ZipWriter;
6
7pub struct ZipUtil;
8
9impl ZipUtil {
10 pub fn compress_files(files: Vec<&str>, zip_file: &str) -> Result<(), Box<dyn std::error::Error>> {
11 let file = File::create(zip_file)?;
12
13 let mut zip = ZipWriter::new(file);
14
15 for &file_path in files.iter() {
16 let file_content = std::fs::read(file_path)?;
17 let options = zip::write::FileOptions::default()
18 .compression_method(zip::CompressionMethod::Stored)
19 .unix_permissions(std::fs::metadata(file_path)?.permissions().mode());
20
21 zip.start_file(file_path, options)?;
22 zip.write_all(&file_content)?;
23 }
24
25 zip.finish()?;
26 Ok(())
27 }
28}
29
30
31