public abstract class FSDataOutputStream
extends java.io.OutputStream
FileSystem
.
This class extends the base OutputStream
with some additional important methods.
These streams are used to persistently store data, both for results of streaming applications and for fault tolerance and recovery. It is therefore crucial that the persistence semantics of these streams are well defined.
Please refer to the class-level docs of FileSystem
for the definition of
data persistence via Flink's FileSystem abstraction and the FSDataOutputStream
.
Implementations of the FSDataOutputStream
are generally not assumed to be thread safe.
Instances of FSDataOutputStream
should not be passed between threads, because there
are no guarantees about the order of visibility of operations across threads.
FileSystem
,
FSDataInputStream
Constructor and Description |
---|
FSDataOutputStream() |
Modifier and Type | Method and Description |
---|---|
abstract void |
close()
Closes the output stream.
|
abstract void |
flush()
Flushes the stream, writing any data currently buffered in stream implementation
to the proper output stream.
|
abstract java.nio.channels.FileChannel |
getChannel() |
abstract long |
getPos()
Gets the position of the stream (non-negative), defined as the number of bytes
from the beginning of the file to the current writing position.
|
abstract void |
sync()
Flushes the data all the way to the persistent non-volatile storage (for example disks).
|
abstract void |
write(java.nio.ByteBuffer byteBuffer) |
public abstract long getPos() throws java.io.IOException
This method must report accurately report the current position of the stream. Various components of the high-availability and recovery logic rely on the accurate
java.io.IOException
- Thrown if an I/O error occurs while obtaining the position from
the stream implementation.public abstract void flush() throws java.io.IOException
A completed flush does not mean that the data is necessarily persistent. Data
persistence can is only assumed after calls to close()
or sync()
.
Implementation note: This overrides the method defined in OutputStream
as abstract to force implementations of the FSDataOutputStream
to implement
this method directly.
flush
in interface java.io.Flushable
flush
in class java.io.OutputStream
java.io.IOException
- Thrown if an I/O error occurs while flushing the stream.public abstract void sync() throws java.io.IOException
java.io.IOException
- Thrown if an I/O error occurspublic abstract void close() throws java.io.IOException
class-level docs
.
The above implies that the method must block until persistence can be guaranteed.
For example for distributed replicated file systems, the method must block until the
replication quorum has been reached. If the calling thread is interrupted in the
process, it must fail with an IOException
to indicate that persistence cannot
be guaranteed.
If this method throws an exception, the data in the stream cannot be assumed to be persistent.
Implementation note: This overrides the method defined in OutputStream
as abstract to force implementations of the FSDataOutputStream
to implement
this method directly.
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in class java.io.OutputStream
java.io.IOException
- Thrown, if an error occurred while closing the stream or guaranteeing
that the data is persistent.public abstract void write(java.nio.ByteBuffer byteBuffer) throws java.io.IOException
java.io.IOException
public abstract java.nio.channels.FileChannel getChannel() throws java.io.IOException
java.io.IOException