Package org.apache.zookeeper.common
Class AtomicFileOutputStream
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
org.apache.zookeeper.common.AtomicFileOutputStream
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
A FileOutputStream that has the property that it will only show up at its
destination once it has been entirely written and flushed to disk. While
being written, it will use a .tmp suffix.
When the output stream is closed, it is flushed, fsynced, and will be moved
into place, overwriting any file that already exists at that location.
NOTE: on Windows platforms, it will not atomically replace the target
file - instead the target file is deleted before this one is moved into
place.
-
Field Summary
FieldsFields inherited from class java.io.FilterOutputStream
out
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
abort()
Close the atomic file, but do not "commit" the temporary file on top of the destination.void
close()
void
write
(byte[] b, int off, int len) The default write method in FilterOutputStream does not call the write method of its underlying input stream with the same arguments.Methods inherited from class java.io.FilterOutputStream
flush, write, write
Methods inherited from class java.io.OutputStream
nullOutputStream
-
Field Details
-
TMP_EXTENSION
- See Also:
-
-
Constructor Details
-
AtomicFileOutputStream
- Throws:
FileNotFoundException
-
-
Method Details
-
write
The default write method in FilterOutputStream does not call the write method of its underlying input stream with the same arguments. Instead it writes the data byte by byte, override it here to make it more efficient.- Overrides:
write
in classFilterOutputStream
- Throws:
IOException
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classFilterOutputStream
- Throws:
IOException
-
abort
public void abort()Close the atomic file, but do not "commit" the temporary file on top of the destination. This should be used if there is a failure in writing.
-