public class CpioArchiveOutputStream extends ArchiveOutputStreamimplements CpioConstants
An entry can be written by creating an instance of CpioArchiveEntry and fill it with the necessary values and put it into the CPIO stream. Afterwards write the contents of the file into the CPIO stream. Either close the stream by calling finish() or put a next entry into the cpio stream.
CpioArchiveOutputStream out = new CpioArchiveOutputStream(
new FileOutputStream(new File("test.cpio")));
CpioArchiveEntry entry = new CpioArchiveEntry();
entry.setName("testfile");
String contents = "12345";
entry.setFileSize(contents.length());
entry.setMode(CpioConstants.C_ISREG); // regular file
... set other attributes, e.g. time, number of links
out.putArchiveEntry(entry);
out.write(testContents.getBytes());
out.close();
Note: This implementation should be compatible to cpio 2.5
This class uses mutable fields and is not considered 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 |
|---|
CpioArchiveOutputStream(OutputStream
Construct the cpio output stream.
|
CpioArchiveOutputStream(OutputStream
Construct the cpio output stream with a specified format, a blocksize of
BLOCK_SIZE and using ASCII as the file name encoding.
|
CpioArchiveOutputStream(OutputStream
Construct the cpio output stream with a specified format using ASCII as the file name encoding.
|
CpioArchiveOutputStream(OutputStream
Construct the cpio output stream with a specified format using ASCII as the file name encoding.
|
CpioArchiveOutputStream(OutputStream
Construct the cpio output stream.
|
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Closes the CPIO output stream as well as the stream being filtered.
|
void |
closeArchiveEntry()
Closes the archive entry, writing any trailer information that may be required.
|
ArchiveEntry |
createArchiveEntry(File
Creates a new ArchiveEntry.
|
void |
finish()
Finishes writing the contents of the CPIO output stream without closing the underlying stream.
|
void |
putArchiveEntry(ArchiveEntry
Begins writing a new CPIO file entry and positions the stream to the start of the entry data.
|
void |
write(byte[] b, int off, int len)
Writes an array of bytes to the current CPIO entry data.
|
canWriteEntryData, count, count, getBytesWritten, getCount, writeflush, writepublic CpioArchiveOutputStream(OutputStreamout, short format)
BLOCK_SIZE and using ASCII as the file name encoding.
out - The cpio stream
format - The format of the stream
public CpioArchiveOutputStream(OutputStreamout, short format, int blockSize)
out - The cpio stream
format - The format of the stream
blockSize - The block size of the archive.
public CpioArchiveOutputStream(OutputStreamout, short format, int blockSize, String encoding)
out - The cpio stream
format - The format of the stream
blockSize - The block size of the archive.
encoding - The encoding of file names to write - use null for the platform's default.
public CpioArchiveOutputStream(OutputStreamout)
out - The cpio stream
public CpioArchiveOutputStream(OutputStreamout, String encoding)
out - The cpio stream
encoding - The encoding of file names to write - use null for the platform's default.
public void putArchiveEntry(ArchiveEntryentry) throws IOException
putArchiveEntry in class
ArchiveOutputStream
entry - the CPIO cpioEntry to be written
IOException - if an I/O error has occurred or if a CPIO file error has occurred
ClassCastException - if entry is not an instance of CpioArchiveEntry
public void closeArchiveEntry()
throws IOException
ArchiveOutputStream
closeArchiveEntry in class
ArchiveOutputStream
IOException -
public void write(byte[] b,
int off,
int len)
throws IOException
write in class
OutputStream
b - the data to be written
off - the start offset in the data
len - the number of bytes that are written
IOException - if an I/O error has occurred or if a CPIO file error has occurred
public void finish()
throws IOException
finish in class
ArchiveOutputStream
IOException - if an I/O exception 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
OutputStream
IOException - if an I/O error has occurred or if a CPIO file error has occurred
public ArchiveEntrycreateArchiveEntry(File inputFile, String entryName) throws IOException
createArchiveEntry in class
ArchiveOutputStream
IOException -
ArchiveOutputStream.createArchiveEntry(java.io.File, java.lang.String)