public class CpioArchiveInputStream extends ArchiveInputStreamimplements CpioConstants
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;
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
Construct the cpio input stream with a blocksize of
BLOCK_SIZE and expecting ASCII file names.
|
CpioArchiveInputStream(InputStream
Construct the cpio input stream with a blocksize of
BLOCK_SIZE expecting ASCII file names.
|
CpioArchiveInputStream(InputStream
Construct the cpio input stream with a blocksize of
BLOCK_SIZE.
|
CpioArchiveInputStream(InputStream
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(InputStreamin)
BLOCK_SIZE and expecting ASCII file names.
in - The cpio stream
public CpioArchiveInputStream(InputStreamin, String encoding)
BLOCK_SIZE.
in - The cpio stream
encoding - The encoding of file names to expect - use null for the platform's default.
public CpioArchiveInputStream(InputStreamin, int blockSize)
BLOCK_SIZE expecting ASCII file names.
in - The cpio stream
blockSize - The block size of the archive.
public CpioArchiveInputStream(InputStreamin, int blockSize, String encoding)
BLOCK_SIZE.
in - The cpio stream
blockSize - 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
Programs should not count on this method to return the actual number of bytes that could be read without blocking.
available in class
InputStream
IOException - if an I/O error has occurred or if a CPIO file error has occurred
public void close()
throws IOException
close in interface
Closeable
close in interface
AutoCloseable
close in class
InputStream
IOException - if an I/O error has occurred
public CpioArchiveEntrygetNextCPIOEntry() throws IOException
IOException - if an I/O error has occurred or if a CPIO file error has occurred
public int read(byte[] b,
int off,
int len)
throws IOException
read in class
InputStream
b - the buffer into which the data is read
off - the start offset of the data
len - the maximum number of bytes read
IOException - if an I/O error has occurred or if a CPIO file error has occurred
public long skip(long n)
throws IOException
skip in class
InputStream
n - the number of bytes to skip
IOException - if an I/O error has occurred
IllegalArgumentException - if n < 0
public ArchiveEntrygetNextEntry() throws IOException
ArchiveInputStream
getNextEntry in class
ArchiveInputStream
null if there are no more entries
IOException - if the next entry could not be read
public static boolean matches(byte[] signature,
int length)