Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.commons.compress.archivers.cpio
Class CpioArchiveInputStream

    java.lang.Object
      java.io.InputStream
          org.apache.commons.compress.archivers.ArchiveInputStream
              org.apache.commons.compress.archivers.cpio.CpioArchiveInputStream

All Implemented Interfaces:
  Closeable, CpioConstants

    public class CpioArchiveInputStream

extends ArchiveInputStream
implements CpioConstants

CPIOArchiveInputStream is a stream for reading cpio streams. All formats of cpio are supported (old ascii, old binary, new portable format and the new portable format with crc).

The stream can be read by extracting a cpio entry (containing all informations about a entry) and afterwards reading from the stream the file specified by the entry.

`

     CPIOArchiveInputStream cpioIn = new CPIOArchiveInputStream(
             new FileInputStream(new File("test.cpio")));
     CPIOArchiveEntry cpioEntry;

     while ((cpioEntry = cpioIn.getNextEntry()) != null) {
         System.out.println(cpioEntry.getName());
         int tmp;
         StringBuffer buf = new StringBuffer();
         while ((tmp = cpIn.read()) != -1) {
             buf.append((char) tmp);
         }
         System.out.println(buf.toString());
     }
     cpioIn.close();

`

Note: This implementation should be compatible to cpio 2.5 This class uses mutable fields and is not considered to be threadsafe. Based on code from the jRPM project (jrpm.sourceforge.net)

Field Summary

Fields inherited from interface org.apache.commons.compress.archivers.cpio.CpioConstants
`BLOCK_SIZE, C_IRGRP, C_IROTH, C_IRUSR, C_ISBLK, C_ISCHR, C_ISDIR, C_ISFIFO, C_ISGID, C_ISLNK, C_ISNWK, C_ISREG, C_ISSOCK, C_ISUID, C_ISVTX, C_IWGRP, C_IWOTH, C_IWUSR, C_IXGRP, C_IXOTH, C_IXUSR, CPIO_TRAILER, FORMAT_NEW, FORMAT_NEW_CRC, FORMAT_NEW_MASK, FORMAT_OLD_ASCII, FORMAT_OLD_BINARY, FORMAT_OLD_MASK, MAGIC_NEW, MAGIC_NEW_CRC, MAGIC_OLD_ASCII, MAGIC_OLD_BINARY, S_IFMT`

Constructor Summary
`CpioArchiveInputStream(InputStream in)` Construct the cpio input stream

Method Summary
`int` | `available()` Returns 0 after EOF has reached for the current entry data, otherwise always return 1.
`void` | `close()` Closes the CPIO input stream.
`CpioArchiveEntry` | `getNextCPIOEntry()` Reads the next CPIO file entry and positions stream at the beginning of the entry data.
`ArchiveEntry` | `getNextEntry()` Returns the next Archive Entry in this Stream.
`static boolean` | `matches(byte[] signature, int length)` Checks if the signature matches one of the following magic values: Strings: "070701" - MAGIC_NEW "070702" - MAGIC_NEW_CRC "070707" - MAGIC_OLD_ASCII Octal Binary value: 070707 - MAGIC_OLD_BINARY (held as a short) = 0x71C7 or 0xC771
`int` | `read(byte[] b, int off, int len)` Reads from the current CPIO entry into an array of bytes.
`long` | `skip(long n)` Skips specified number of bytes in the current CPIO entry.

Methods inherited from class org.apache.commons.compress.archivers.ArchiveInputStream
`canReadEntryData, count, count, getBytesRead, getCount, pushedBackBytes, read`

Methods inherited from class java.io.InputStream
`mark, markSupported, read, reset`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### CpioArchiveInputStream

    public CpioArchiveInputStream(InputStream in)

  Construct the cpio input stream

  Parameters:
    `in` - The cpio stream

Method Detail

### available

    public int available()
                  throws IOException

  Returns 0 after EOF has reached for the current entry data, otherwise always return 1.

  Programs should not count on this method to return the actual number of bytes that could be read without blocking.

  Overrides:
    `available` in class `InputStream`
  Returns:
    1 before EOF and 0 after EOF has reached for current entry.
  Throws:
    `IOException` - if an I/O error has occurred or if a CPIO file error has occurred

### close

    public void close()
               throws IOException

  Closes the CPIO input stream.

  Specified by:
    `close` in interface `Closeable`
  Overrides:
    `close` in class `InputStream`
  Throws:
    `IOException` - if an I/O error has occurred

### getNextCPIOEntry

    public CpioArchiveEntry getNextCPIOEntry()
                                      throws IOException

  Reads the next CPIO file entry and positions stream at the beginning of the entry data.

  Returns:
    the CPIOArchiveEntry just read
  Throws:
    `IOException` - if an I/O error has occurred or if a CPIO file error has occurred

### read

    public int read(byte[] b,
                    int off,
                    int len)
             throws IOException

  Reads from the current CPIO entry into an array of bytes. Blocks until some input is available.

  Overrides:
    `read` in class `InputStream`
  Parameters:
    `b` - the buffer into which the data is read
    `off` - the start offset of the data
    `len` - the maximum number of bytes read
  Returns:
    the actual number of bytes read, or -1 if the end of the entry is reached
  Throws:
    `IOException` - if an I/O error has occurred or if a CPIO file error has occurred

### skip

    public long skip(long n)
              throws IOException

  Skips specified number of bytes in the current CPIO entry.

  Overrides:
    `skip` in class `InputStream`
  Parameters:
    `n` - the number of bytes to skip
  Returns:
    the actual number of bytes skipped
  Throws:
    `IOException` - if an I/O error has occurred
    `IllegalArgumentException` - if n < 0

### getNextEntry

    public ArchiveEntry getNextEntry()
                              throws IOException

  Returns the next Archive Entry in this Stream.

  Specified by:
    `getNextEntry` in class `ArchiveInputStream`
  Returns:
    the next entry, or `null` if there are no more entries
  Throws:
    `IOException` - if the next entry could not be read

### matches

    public static boolean matches(byte[] signature,
                                  int length)

  Checks if the signature matches one of the following magic values: Strings: "070701" - MAGIC_NEW "070702" - MAGIC_NEW_CRC "070707" - MAGIC_OLD_ASCII Octal Binary value: 070707 - MAGIC_OLD_BINARY (held as a short) = 0x71C7 or 0xC771

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2011 The Apache Software Foundation. All Rights Reserved.