Coffeearc is a multi-format archiver created as part of a private project to easily integrate experimental command line compression tools as plugins, providing more functionality and ease of use as a full-fledged archiver tool. Experimental compression tools can often pack and unpack only individual files. However, in conjunction with Coffeearc, many more features are easily available as soon as the tool is integrated. This is done by creating a very simple XML specification.

Techniques and Features:

  • XML based plugin system for command definition and GUI configuration.
  • Typical archiver functionality
    • Create, unpack, open and change archives (add or delete files). Storage of additional data such as checksums and file attributes.
    • Solid archiving : Files are sorted and grouped into larger blocks before being compressed. This can significantly improve the packing rate, especially when compressing many small files.
    • Encryption : Archives can be encrypted with up to 256 bits (AES).
    • Multithreading : Coffeearc can pack up to 8 processes at the same time, significantly increasing the packing speed.
    • Pipes : If the compression tool is capable of doing so, Coffeearc uses the standard input / output stream for data transfer. This will require fewer temporary files.
  • Providing a very simple Java API for programming new compression algorithms.
  • Optionally very high or fast compression methods by integration of two special compression tools (CCM and Slug).
  • Support of some standard archive types (eg ZIP, TAR.GZ, BZ2).
  • Drag and drop support for easy creation of file lists.

Main window of Coffeearc (left: file explorer, middle: file list of the archive, right: profiles and settings):

Example of an XML specification that generates GUI elements for a profile:

<gui name="Mode" type="radio">
  <option label="Fast">
    <replace key="%opt1" with="-f"/>
  <option label="Normal" default="yes">
    <replace key="%opt1" with="-n"/>
  <option label="Strong">
    <replace key="%opt1" with="-s"/>

<gui name="Misc" type="check">
   <option label="Debug">
     <replace key="%opt2" with="-d"/>
   <option label="Information" selected="yes">
     <replace key="%opt2" with="-i"/>

<gui name="Many" type="combo">
   <option label="Another option 1">
<replace key="%opt3" with="-a:1"/></option>
   <option label="Another option 2" default="yes"><replace key="%opt3" with="-b:2"/></option>
   <option label="Another option 3"><replace key="%opt3" with="-c:3"/></option>

The XML tags define the type of GUI elements (eg checkbox or radio button). Placeholders are used to define which parameters are passed to the compression tool when an option is selected.

View of the profile GUI generated by the above XML code:

Coffeearc is an open source project and has been released under GPL license. Project page:

See also:



OaSharp (OpenAPI Sharp)
An OpenAPI / Swagger C# REST server code generator and hosting .NET standard library | 5/21/2020

My first attempts with C# server code generation for OpenAPI failed catastrophically. ... Read More

Randomeal (.NET)
A small .NET standard library implementing a randomized genetic algorithm and self-adjusting simulated annealing | 1/22/2020

Randomeal is a small .NET standard library which implements a simplified genetic algorithm ... Read More

BigDecimal (.NET)
An arbitrary large (or small) decimal number implementation for .NET | 8/3/2019

BigDecimal represents a decimal number with arbitrary precision. It is based on a ... Read More

More Blog Entries