org.apache.commons.compress.archivers.cpio
public class CpioArchiveInputStream extends ArchiveInputStream implements CpioConstants
CPIOArchiveInputStream cpioIn = new CPIOArchiveInputStream(
new FileInputStream(new File("test.cpio")));
CPIOArchiveEntry cpioEntry;
while ((cpioEntry = cpioIn.getNextEntry()) != null) {
System.out.println(cpioEntry.getName());
int tmp;
StringBuilder buf = new StringBuilder();
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)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 and Description |
|---|
CpioArchiveInputStream(InputStream in)
Construct the cpio input stream with a blocksize of
BLOCK_SIZE and expecting ASCII file
names. |
CpioArchiveInputStream(InputStream in,
int blockSize)
Construct the cpio input stream with a blocksize of
BLOCK_SIZE expecting ASCII file
names. |
CpioArchiveInputStream(InputStream in,
int blockSize,
String encoding)
Construct the cpio input stream with a blocksize of
BLOCK_SIZE. |
CpioArchiveInputStream(InputStream in,
String encoding)
Construct the cpio input stream with a blocksize of
BLOCK_SIZE. |
| Modifier and Type | Method and Description |
|---|---|
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.
|
canReadEntryData, count, count, getBytesRead, getCount, pushedBackBytes, readmark, markSupported, read, resetpublic CpioArchiveInputStream(InputStream in)
BLOCK_SIZE and expecting ASCII file
names.in - The cpio streampublic CpioArchiveInputStream(InputStream in, String encoding)
BLOCK_SIZE.in - The cpio streamencoding - The encoding of file names to expect - use null for
the platform's default.public CpioArchiveInputStream(InputStream in, int blockSize)
BLOCK_SIZE expecting ASCII file
names.in - The cpio streamblockSize - The block size of the archive.public CpioArchiveInputStream(InputStream in, int blockSize, String encoding)
BLOCK_SIZE.in - The cpio streamblockSize - The block size of the archive.encoding - The encoding of file names to expect - use null for
the platform's default.public int available()
throws IOException
available in class InputStreamIOException - if an I/O error has occurred or if a CPIO file error has
occurredpublic void close()
throws IOException
close in interface Closeableclose in class InputStreamIOException - if an I/O error has occurredpublic CpioArchiveEntry getNextCPIOEntry() throws IOException
IOException - if an I/O error has occurred or if a CPIO file error has
occurredpublic int read(byte[] b,
int off,
int len)
throws IOException
read in class InputStreamb - the buffer into which the data is readoff - the start offset of the datalen - the maximum number of bytes readIOException - if an I/O error has occurred or if a CPIO file error has
occurredpublic long skip(long n)
throws IOException
skip in class InputStreamn - the number of bytes to skipIOException - if an I/O error has occurredIllegalArgumentException - if n < 0public ArchiveEntry getNextEntry() throws IOException
ArchiveInputStreamgetNextEntry in class ArchiveInputStreamnull if there are no more entriesIOException - if the next entry could not be readpublic static boolean matches(byte[] signature,
int length)
Copyright © 2013 The Apache Software Foundation. All rights reserved.