CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-cn-hutool--hutool-core

Comprehensive Java utility library providing collections, strings, beans, dates, I/O, and numerous other utility functions.

Pending
Overview
Eval results
Files

compression-operations.mddocs/

Compression Operations

ZIP file compression, decompression, and archive manipulation utilities through the ZipUtil class.

Capabilities

ZIP File Creation

Create ZIP archives from files and directories.

/**
 * Compress file or directory to ZIP with same name
 * @param srcPath path to file or directory to compress
 * @return ZIP file created
 */
public static File zip(String srcPath);

/**
 * Compress file or directory to ZIP with charset
 * @param srcPath path to file or directory to compress
 * @param charset character encoding for file names
 * @return ZIP file created
 */
public static File zip(String srcPath, Charset charset);

/**
 * Compress file to ZIP
 * @param srcFile file or directory to compress
 * @return ZIP file created
 */
public static File zip(File srcFile);

/**
 * Compress file to specified ZIP path
 * @param srcPath source file or directory path
 * @param zipPath destination ZIP file path
 * @return ZIP file created
 */
public static File zip(String srcPath, String zipPath);

/**
 * Compress file to ZIP with directory inclusion control
 * @param srcPath source file or directory path
 * @param zipPath destination ZIP file path
 * @param withSrcDir whether to include source directory in ZIP
 * @return ZIP file created
 */
public static File zip(String srcPath, String zipPath, boolean withSrcDir);

/**
 * Compress multiple files to ZIP
 * @param zipFile destination ZIP file
 * @param withSrcDir whether to include source directories
 * @param srcFiles source files to compress
 * @return ZIP file created
 */
public static File zip(File zipFile, boolean withSrcDir, File... srcFiles);

/**
 * Compress files to ZIP with charset and filter
 * @param zipFile destination ZIP file
 * @param charset character encoding
 * @param withSrcDir whether to include source directories
 * @param filter file filter for selection
 * @param srcFiles source files to compress
 * @return ZIP file created
 */
public static File zip(File zipFile, Charset charset, boolean withSrcDir, FileFilter filter, File... srcFiles);

Usage Examples:

import cn.hutool.core.util.ZipUtil;
import java.io.File;
import java.nio.charset.StandardCharsets;

// Simple compression
File zipFile = ZipUtil.zip("/path/to/source"); // Creates source.zip

// Compress to specific location
File customZip = ZipUtil.zip("/path/to/source", "/backup/archive.zip");

// Compress multiple files
File[] files = {new File("file1.txt"), new File("file2.txt")};
File multiZip = ZipUtil.zip(new File("archive.zip"), false, files);

// Compress with UTF-8 encoding
File utf8Zip = ZipUtil.zip("/path/to/source", StandardCharsets.UTF_8);

ZIP File Extraction

Extract ZIP archives to directories.

/**
 * Extract ZIP file to same directory
 * @param zipFilePath path to ZIP file
 * @return directory containing extracted files
 */
public static File unzip(String zipFilePath);

/**
 * Extract ZIP file with character encoding
 * @param zipFilePath path to ZIP file
 * @param charset character encoding for file names
 * @return directory containing extracted files
 */
public static File unzip(String zipFilePath, Charset charset);

/**
 * Extract ZIP file
 * @param zipFile ZIP file to extract
 * @return directory containing extracted files
 */
public static File unzip(File zipFile);

/**
 * Extract ZIP file to specific directory
 * @param zipFilePath path to ZIP file
 * @param outFileDir destination directory path
 * @return directory containing extracted files
 */
public static File unzip(String zipFilePath, String outFileDir);

/**
 * Extract ZIP file to directory with charset
 * @param zipFile ZIP file to extract
 * @param outFile destination directory
 * @param charset character encoding
 * @return directory containing extracted files
 */
public static File unzip(File zipFile, File outFile, Charset charset);

/**
 * Extract ZIP file with size limit
 * @param zipFile opened ZipFile
 * @param outFile destination directory
 * @param limit maximum bytes to extract
 * @return directory containing extracted files
 */
public static File unzip(ZipFile zipFile, File outFile, long limit);

Usage Examples:

import cn.hutool.core.util.ZipUtil;
import java.io.File;
import java.nio.charset.StandardCharsets;

// Simple extraction
File extractedDir = ZipUtil.unzip("archive.zip");

// Extract to specific directory
File targetDir = ZipUtil.unzip("archive.zip", "/extract/here");

// Extract with UTF-8 encoding
File utf8Dir = ZipUtil.unzip("chinese-files.zip", StandardCharsets.UTF_8);

// Extract with size limit (security)
try (ZipFile zf = new ZipFile("large-archive.zip")) {
    File safeDir = ZipUtil.unzip(zf, new File("safe-extract"), 100_000_000); // 100MB limit
}

ZIP Archive Manipulation

Modify existing ZIP archives by adding or reading entries.

/**
 * Append file to existing ZIP archive
 * @param zipPath path to existing ZIP file
 * @param appendFilePath path to file to append
 * @param options copy options
 */
public static void append(Path zipPath, Path appendFilePath, CopyOption... options);

/**
 * Add string content as file to ZIP
 * @param zipFile ZIP file to modify
 * @param path internal path for the content
 * @param data string content to add
 * @return modified ZIP file
 */
public static File zip(File zipFile, String path, String data);

/**
 * Add content from InputStream to ZIP
 * @param zipFile ZIP file to modify
 * @param path internal path for the content
 * @param data InputStream containing data
 * @return modified ZIP file
 */
public static File zip(File zipFile, String path, InputStream data);

ZIP Stream Operations

Work with ZIP data in memory using streams.

/**
 * Compress to ZIP output stream
 * @param out output stream to write ZIP data
 * @param charset character encoding
 * @param withSrcDir whether to include source directories
 * @param filter file filter
 * @param srcFiles source files to compress
 */
public static void zip(OutputStream out, Charset charset, boolean withSrcDir, FileFilter filter, File... srcFiles);

/**
 * Compress string to GZIP bytes
 * @param content string content to compress
 * @param charset character encoding
 * @return compressed bytes
 */
public static byte[] gzip(String content, String charset);

/**
 * Decompress GZIP bytes to string
 * @param buf compressed bytes
 * @param charset character encoding
 * @return decompressed string
 */
public static String unGzip(byte[] buf, String charset);

/**
 * Compress bytes using deflate
 * @param data bytes to compress
 * @param level compression level (0-9)
 * @return compressed bytes
 */
public static byte[] deflate(byte[] data, int level);

/**
 * Decompress deflate compressed bytes
 * @param data compressed bytes
 * @return decompressed bytes
 */
public static byte[] undeflate(byte[] data);

Usage Examples:

import cn.hutool.core.util.ZipUtil;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;

// GZIP compression
String text = "Hello, World! This is a long text to compress.";
byte[] compressed = ZipUtil.gzip(text, "UTF-8");
String decompressed = ZipUtil.unGzip(compressed, "UTF-8");

// Deflate compression
byte[] data = "Sample data".getBytes();
byte[] deflated = ZipUtil.deflate(data, 6); // Level 6 compression
byte[] inflated = ZipUtil.undeflate(deflated);

// Stream compression
ByteArrayOutputStream baos = new ByteArrayOutputStream();
File[] files = {new File("file1.txt"), new File("file2.txt")};
ZipUtil.zip(baos, StandardCharsets.UTF_8, false, null, files);
byte[] zipBytes = baos.toByteArray();

ZIP File Reading

Read and inspect ZIP archive contents.

/**
 * Get input stream for ZIP entry
 * @param zipFile opened ZIP file
 * @param zipEntry ZIP entry to read
 * @return InputStream for entry data
 */
public static InputStream getStream(ZipFile zipFile, ZipEntry zipEntry);

/**
 * Read ZIP entry names
 * @param zipFile ZIP file to inspect
 * @return list of entry names
 */
public static List<String> listFileNames(ZipFile zipFile);

/**
 * Get ZIP entries enumeration
 * @param zipFile ZIP file to inspect
 * @return enumeration of ZIP entries
 */
public static Enumeration<? extends ZipEntry> entries(ZipFile zipFile);

/**
 * Check if ZIP file contains entry
 * @param zipFile ZIP file to check
 * @param name entry name to find
 * @return true if entry exists
 */
public static boolean contains(ZipFile zipFile, String name);

Common Types

// Compression types
import java.util.zip.ZipFile;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipInputStream;
import java.io.FileFilter;
import java.nio.charset.Charset;
import java.nio.file.CopyOption;

// Compression levels
public static final int BEST_COMPRESSION = 9;
public static final int BEST_SPEED = 1;
public static final int DEFAULT_COMPRESSION = -1;

Install with Tessl CLI

npx tessl i tessl/maven-cn-hutool--hutool-core

docs

collection-operations.md

compression-operations.md

date-time-operations.md

file-io-operations.md

index.md

object-operations.md

random-operations.md

string-operations.md

type-conversion.md

url-operations.md

xml-operations.md

tile.json