# Package org.apache.cassandra.io.util

Interface Summary
BytesReadTracker
ChunkReader: RandomFileReader component that reads data from a file into a provided buffer and may have requirements over the size and alignment of reads.
DataInputPlus: Extension to DataInput that provides support for reading varints
DataOutputPlus: Extension to DataOutput that provides for writing ByteBuffer and Memory, potentially with an efficient implementation that is zero copy or at least has reduced bounds checking overhead.
DataPosition
DiskOptimizationStrategy
FileDataInput
ReaderFileProxy: Base class for the RandomAccessReader components that implement reading.
Rebufferer: Rebufferer for reading data by a RandomAccessReader.
Rebufferer.BufferHolder
RebuffererFactory: Interface for the classes that can be used to instantiate rebufferers over a given file.
RewindableDataInput

Class Summary
AbstractReaderFileProxy
BufferedDataOutputStreamPlus: An implementation of the DataOutputStreamPlus interface using a ByteBuffer to stage writes before flushing them to an underlying channel.
BufferManagingRebufferer: Buffer manager used for reading from a ChunkReader when cache is not in use.
BufferManagingRebufferer.Aligned
BufferManagingRebufferer.Unaligned
ChannelProxy: A proxy of a FileChannel that: - implements reference counting - exports only thread safe FileChannel operations - wraps IO exceptions into runtime exceptions Tested by RandomAccessReaderTest.
ChecksummedRandomAccessReader
ChecksummedSequentialWriter
ChecksumWriter
CompressedChunkReader
CompressedChunkReader.Mmap
CompressedChunkReader.Standard
DataInputBuffer: Input stream around a single ByteBuffer.
DataInputPlus.DataInputStreamPlus: Wrapper around an InputStream that provides no buffering but can decode varints
DataIntegrityMetadata
DataIntegrityMetadata.ChecksumValidator
DataIntegrityMetadata.FileDigestValidator
DataOutputBuffer: An implementation of the DataOutputStream interface using a FastByteArrayOutputStream and exposing its buffer so copies can be avoided.
DataOutputBufferFixed: An implementation of the DataOutputStream interface using a FastByteArrayOutputStream and exposing its buffer so copies can be avoided.
DataOutputStreamPlus: Abstract base class for DataOutputStreams that accept writes from ByteBuffer or Memory and also provide access to the underlying WritableByteChannel associated with their output stream.
FastByteArrayInputStream: A specialized `InputStream` for reading the contents of a byte array.
FileHandle: `FileHandle` provides access to a file for reading, including the ones written by various `SequentialWriter` instances, and it is typically used by `SSTableReader`.
FileHandle.Builder: Configures how the file will be read (compressed, mmapped, use cache etc.)
FileSegmentInputStream: This is the same as DataInputBuffer, i.e.
FileUtils
LengthAvailableInputStream: a FilterInputStream that returns the remaining bytes to read from available() regardless of whether the device is ready to provide them.
LimitingRebufferer: Rebufferer wrapper that applies rate limiting.
Memory: An off-heap region of memory that must be manually free'd when no longer needed.
MemoryInputStream
MemoryOutputStream: This class provides a way to stream the writes into the `Memory`
MmappedRegions
MmappedRegions.Region
MmappedRegions.Tidier
NIODataInputStream: Rough equivalent of BufferedInputStream and DataInputStream wrapping the input stream of a File or Socket Created to work around the fact that when BIS + DIS delegate to NIO for socket IO they will allocate large thread local direct byte buffers when a large array is used to read.
RandomAccessReader
RebufferingInputStream: Rough equivalent of BufferedInputStream and DataInputStream wrapping a ByteBuffer that can be refilled via rebuffer.
RewindableDataInputStreamPlus: Adds mark/reset functionality to another input stream by caching read bytes to a memory buffer and spilling to disk if necessary.
RewindableDataInputStreamPlus.RewindableDataInputPlusMark
SafeMemory
SafeMemoryWriter
SequentialWriter: Adds buffering, mark, and fsyncing to OutputStream.
SequentialWriter.BufferedFileWriterMark: Class to hold a mark to the position of the file
SequentialWriterOption: SequentialWriter option
SequentialWriterOption.Builder
SpinningDiskOptimizationStrategy
SsdDiskOptimizationStrategy
TrackedDataInputPlus: This class is to track bytes read from given DataInput
TrackedInputStream: This class is to track bytes read from given DataInputStream
UnbufferedDataOutputStreamPlus: Base class for DataOutput implementations that does not have an optimized implementations of Plus methods and does no buffering.
WrappedDataOutputStreamPlus: When possible use `WrappedDataOutputStreamPlus` instead of this class, as it will be more efficient when using Plus methods.

Exception Summary
CorruptFileException