Package com.pnfsoftware.jeb.util.io
Class RotatingFileOutputStream
java.lang.Object
java.io.OutputStream
com.pnfsoftware.jeb.util.io.RotatingFileOutputStream
- All Implemented Interfaces:
Closeable
,Flushable
,AutoCloseable
Output stream whose sinks are a series of files. When the output exceeds the maximum file count and
maximum size per file, it gets rotated: older output gets deleted to make room for more recent
output.
-
Constructor Summary
ConstructorsConstructorDescriptionRotatingFileOutputStream
(File folder, String basename, int rotFileCount, long rotFileSize) Create a rotating file(s) output stream.RotatingFileOutputStream
(File folder, String basename, int rotFileCount, long rotFileSize, boolean buffered, boolean appendToExisting) Create a rotating file(s) output stream. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
void
flush()
protected String
generateFileSuffix
(int fileIndex) The file suffix appended to the base filename for additional file.getAdditionalOutputFile
(int i) Retrieve an additional output file by index.Retrieve the principal (first) output file.int
long
long
boolean
void
rotate()
void
write
(byte[] b, int off, int len) void
write
(int b) Methods inherited from class java.io.OutputStream
nullOutputStream, write
-
Constructor Details
-
RotatingFileOutputStream
public RotatingFileOutputStream(File folder, String basename, int rotFileCount, long rotFileSize) throws IOException Create a rotating file(s) output stream. The stream is buffered, output is appended to existing files (if any).- Parameters:
folder
-basename
-rotFileCount
-rotFileSize
-- Throws:
IOException
-
RotatingFileOutputStream
public RotatingFileOutputStream(File folder, String basename, int rotFileCount, long rotFileSize, boolean buffered, boolean appendToExisting) throws IOException Create a rotating file(s) output stream.- Parameters:
folder
- output folder; use null to denote the current working directorybasename
- base file name, must be non-emptyrotFileCount
- >=0 (can be 0 for no rotating output); should be >= 1rotFileSize
- >0 (cannot be negative or "infinite": a maximum file size must be specified to prevent uncontrolled growth)buffered
- enable or disable buffered-writes (recommended for high-frequency writing)appendToExisting
- append to a previously existing file, if any- Throws:
IOException
- on IO error
-
-
Method Details
-
getRotatingFileCount
public int getRotatingFileCount() -
getRotatingFileSize
public long getRotatingFileSize() -
isBuffered
public boolean isBuffered() -
getRotationCount
public long getRotationCount() -
getOutputFile
Retrieve the principal (first) output file.- Returns:
-
getAdditionalOutputFile
Retrieve an additional output file by index.- Parameters:
i
- file index, must be in [1, maximum_filecount]- Returns:
- Throws:
IOException
-
generateFileSuffix
The file suffix appended to the base filename for additional file. Note that the default implementation simply generates a ".N" suffix.- Parameters:
fileIndex
- file index- Returns:
-
rotate
- Throws:
IOException
-
write
- Specified by:
write
in classOutputStream
- Throws:
IOException
-
write
- Overrides:
write
in classOutputStream
- Throws:
IOException
-
flush
- Specified by:
flush
in interfaceFlushable
- Overrides:
flush
in classOutputStream
- Throws:
IOException
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classOutputStream
- Throws:
IOException
-