Skip to main content

Module zip

Module zip 

Source
Available on crate feature zip only.
Expand description

§Zip File Tasklet

This module provides a tasklet for creating ZIP archives from files and directories. It’s designed to be similar to Spring Batch’s file compression capabilities.

§Features

  • Compress single files or entire directories
  • Configurable compression level
  • Support for filtering files to include/exclude
  • Proper error handling and logging
  • Builder pattern for easy configuration

§Examples

§Basic ZIP Creation

use spring_batch_rs::core::step::{StepBuilder, StepExecution, Step};
use spring_batch_rs::tasklet::zip::ZipTaskletBuilder;
use std::path::Path;
use std::fs;
use std::env::temp_dir;

// Create test data directory and file
let temp_data_dir = temp_dir().join("test_data_zip");
fs::create_dir_all(&temp_data_dir).unwrap();
fs::write(temp_data_dir.join("test.txt"), "test content").unwrap();

let archive_path = temp_dir().join("archive_test.zip");

let zip_tasklet = ZipTaskletBuilder::new()
    .source_path(&temp_data_dir)
    .target_path(&archive_path)
    .compression_level(6)
    .build()?;

let step = StepBuilder::new("zip-files")
    .tasklet(&zip_tasklet)
    .build();

let mut step_execution = StepExecution::new("zip-files");
step.execute(&mut step_execution)?;

// Cleanup test files
fs::remove_file(&archive_path).ok();
fs::remove_dir_all(&temp_data_dir).ok();

§ZIP with File Filtering

use spring_batch_rs::tasklet::zip::ZipTaskletBuilder;

let zip_tasklet = ZipTaskletBuilder::new()
    .source_path("./logs")
    .target_path("./logs_archive.zip")
    .include_pattern("*.log")
    .exclude_pattern("*.tmp")
    .build()?;

Structs§

ZipTasklet
A tasklet for creating ZIP archives from files and directories.
ZipTaskletBuilder
Builder for creating ZipTasklet instances with a fluent interface.