Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Commons Wiki" for 
change notification.

The following page has been changed by ChristianGrobmeier:
http://wiki.apache.org/commons/Compress

The comment on the change is:
modified everything to fit to new implementation, creating link to todo list

------------------------------------------------------------------------------
  ##language:en
  = Component Overview =
- Compress is an API for working with tar, zip and bzip2 files.
+ Compress is an API for working with the following files: tar, zip, bzip2, 
cpio, ar, gz, jar.
  
  = Quick Start =
- *compress* is divided between Compressors and Archivers. While you have
- to get an Archiver from a factory when just archiving one or more files
- to the target file (tar), you'll need a Compressor for reducing the files 
size (bzip2).
+ *compress* is a stream based API. It's original code in this component came 
from Avalon's Excalibur, but originally from Ant, as far as life in Apache 
goes. It has migrated via:
+ Ant -> Avalon-Excalibur -> Commons-IO -> Commons-Compress.
+ More credits can be found in NOTICE.txt file.
+ 
+ *compress* divides the implementation in Compressors and Archivers. For each 
one an factory is implemented. 
+ Basically you have to get the stream implementation from the factory, create 
an entry, put this into the stream and stream.
+ 
+ Some experimental code makes it possible to modify archiver and compressor 
files. This means you can delete from for example a zip file.
  
  Please note:
- There are discussion of "sponsoring" compress with code from TrueZip 
(https://truezip.dev.java.net/)
- and of enhancing compress design. At the moment the current implementation
- is considered as complex by some people. An deeper look at compress 
implementation
- can be found on the CompressImplementationDetails page.
+ There were discussion of "sponsoring" compress with code from TrueZip 
(https://truezip.dev.java.net/). The result was, not to include any code from 
this project (see mailinglists). 
+ There was a discussion about the complex file based implementation too. The 
result was to start again with a stream based implementation and move the old 
one to a branch. More information about the old implementation can be found on 
the CompressImplementationDetails page.
+ 
+ = Roadmap =
+ Compress looks like moving to proper now and prepares for the first release. 
If you want to help, here is the CompressRoadmap.
  
  == Archiver ==
- To pack an archive, you have to get an archiver via the ArchiverFactory. At 
the moment it's possible to get a "zip" or a "tar" archiver. Add your files to 
the archiver and call save to store the archive.
+ To pack an archive, you have to get an archiver stream via the 
ArchiverFactory. Add your streams to the archiver and stream. 
+ Archiver streams are: ZIP, CPIO, AR, TAR, JAR.
  
- === Packing a ZIP-File ===
+ === Creating a ZIP-File ===
-       {{{Archive archiver = ArchiverFactory.getInstance("zip");
-               archiver.add(   new File("C:\\Temp\\1.html"));
-               archiver.add(   new File("C:\\Temp\\1.html.bz2"));
-               archiver.save(  new File("C:\\Temp\\ZIPTEST.zip"));}}}
+ 
+       {{{final OutputStream out = new FileOutputStream(output);
+         ArchiveOutputStream os = new 
ArchiveStreamFactory().createArchiveOutputStream("zip", out);
+ 
+         os.putArchiveEntry(new ZipArchiveEntry("testdata/test1.xml"));
+         IOUtils.copy(new FileInputStream(file1), os);
+         os.closeArchiveEntry();
+ 
+         os.putArchiveEntry(new ZipArchiveEntry("testdata/test2.xml"));
+         IOUtils.copy(new FileInputStream(file2), os);
+         os.closeArchiveEntry();
+         os.close();}}}
  
  === Unpacking a ZIP-File ===
-       {{{Archive archiver = ArchiverFactory.getInstance(
-                               new File("C:\\Temp\\ZIPTEST.zip"));
-               archiver.unpack( new File("C:\\Temp\\unpacked\\"));}}}
+       {{{final InputStream is = new FileInputStream(input);
+         ArchiveInputStream in = new 
ArchiveStreamFactory().createArchiveInputStream("zip", is);
+         ZipArchiveEntry entry = (ZipArchiveEntry)in.getNextEntry();
+         OutputStream out = new FileOutputStream(new File(dir, 
entry.getName()));
+         IOUtils.copy(in, out);
+         out.close();
+         in.close();}}}
  
  == Compressor ==
- Same goes for Compressor. At the moment there is only "bz2" support.
+ Same goes for Compressor. Compressor streams are: bz2 and gz.
  
  === Compressing a file ===
-       {{{Compressor compressor;
-       compressor = CompressorFactory.getInstance("bz2");
-       compressor.compressToHere( new File("C:\\Temp\\test.tar"));}}}
+       {{{final OutputStream out = new FileOutputStream(output);
+       CompressorOutputStream cos = new 
CompressorStreamFactory().createCompressorOutputStream("bzip2", out);
+       IOUtils.copy(new FileInputStream(input), cos);
+       cos.close();}}}
  
  === Decompressing a file ===
-       {{{Compressor decompressor;
-       decompressor = CompressorFactory.getInstance("bz2");
-       decompressor.decompressTo(      new 
File("C:\\Temp\\asf-logo-huge.tar.bz2"),
-                                       new 
File("C:\\Temp\\asf-logo-huge.tar"));}}}
+       {{{final InputStream is = new FileInputStream(input);
+         CompressorInputStream in = new 
CompressorStreamFactory().createCompressorInputStream("bzip2", is);
+         IOUtils.copy(in, new FileOutputStream(output));
+       in.close();}}}
  
  = FAQ =
  
   ||Add your questions/answers here.||
  
- = TODO =
- - Add delete features
- - Enhance implementation design
- 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to