Coffeearc

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>
  <option label="Normal" default="yes">
    <replace key="%opt1" with="-n"/>
  </option>
  <option label="Strong">
    <replace key="%opt1" with="-s"/>
  </option>
</gui>

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

<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>
</gui>

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: http://sourceforge.net/projects/coffeearc/

See also: http://www.softpedia.com/get/PORTABLE-SOFTWARE/Compression-Tools/Coffeearc.shtml

 

Blog

NanoNet - simple Java neural network library
Using backpropagation and sigmoid activation function. | 4/14/2019

NanoNet is a very simple Java neural network library using backpropagation and sigmoid ... Read More

Java async/await nonblocking code library
Write sequential style nonblocking code using a fixed threadpool with Async-Complete for Java | 4/1/2019

Async-Complete (aka Async-Await) is a library for writing asynchronous code in a more ... Read More

SDCLib/J contribution fork
Contributing to IEEE 11073 SDC Family java webservice stack | 2/2/2019

As former main author of the official project in my last job at SurgiTAIX AG, I will maintain ... Read More

More Blog Entries