com.claritysys.io
Class DatedFileOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by com.claritysys.io.DatedFileOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable

public class DatedFileOutputStream
extends java.io.OutputStream

Provides an easy way to write log files which follow a dated naming scheme, such as 'batch_19990527'.

Same as DatedFileWriter, but used for streams. This one is required for redirecting System.out since that is a stream, not a writer.

Version:
$Revision: 2348 $
See Also:
DatedFileWriter

Field Summary
protected  boolean append
          True if we are to open files in append mode.
protected  java.text.SimpleDateFormat dateFormat
          The SimpleDateFormat makes it easy to produce the pattern string, the actual name pattern is passed right to it.
protected  java.io.FileOutputStream fos
          Null if not open, else used to access the underlying file.
protected  java.lang.String lastFileName
          The name of the file we last wrote to or null if we haven't written to one yet.
protected  java.lang.String namePattern
          The original name pattern passed in.
protected  java.io.File parentDir
          The parent directory to create files in.
 
Constructor Summary
DatedFileOutputStream(java.lang.String namePattern)
          Create a new DatedFileOutputStream using the current directory and the given file name pattern.
DatedFileOutputStream(java.lang.String parentPath, java.lang.String namePattern, boolean append)
          Create a new DatedFileOutputStream using the given parent directory and the given file name pattern.
 
Method Summary
 void close()
          Close the stream.
 void flush()
          Flush the stream.
 void write(byte[] buf, int off, int len)
          Write the given sub-array to the file.
 void write(int b)
          Write the given int to the file.
 
Methods inherited from class java.io.OutputStream
write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

lastFileName

protected java.lang.String lastFileName
The name of the file we last wrote to or null if we haven't written to one yet.


namePattern

protected java.lang.String namePattern
The original name pattern passed in.


dateFormat

protected java.text.SimpleDateFormat dateFormat
The SimpleDateFormat makes it easy to produce the pattern string, the actual name pattern is passed right to it.

See Also:
SimpleDateFormat

fos

protected java.io.FileOutputStream fos
Null if not open, else used to access the underlying file.

Note: I've noticed that if a file is deleted or renamed while open no exception is thrown at least on Solaris 2.6. Perhaps this should periodically (writes > 30,000 millis apart?) close and reopen the FileWriter. And maybe a OS person could explain this strange behavior and how to avoid it!


append

protected boolean append
True if we are to open files in append mode.


parentDir

protected java.io.File parentDir
The parent directory to create files in. If null, use current directory.

Constructor Detail

DatedFileOutputStream

public DatedFileOutputStream(java.lang.String parentPath,
                             java.lang.String namePattern,
                             boolean append)
                      throws java.io.IOException
Create a new DatedFileOutputStream using the given parent directory and the given file name pattern.

Parameters:
parentPath - The parent directory to create files in. If null, use current directory.
namePattern - A String formatted for direct use by SimpleDateFormat to make the file name.
append - Set to true to append to a pre-existing log, false to overwrite.
Throws:
java.io.IOException

DatedFileOutputStream

public DatedFileOutputStream(java.lang.String namePattern)
                      throws java.io.IOException
Create a new DatedFileOutputStream using the current directory and the given file name pattern.

Use the current directory, appending to the file if it exists.

Parameters:
namePattern - A String formatted for direct use by SimpleDateFormat to make the file name.
Throws:
java.io.IOException
Method Detail

write

public void write(int b)
           throws java.io.IOException
Write the given int to the file.

Specified by:
write in class java.io.OutputStream
Parameters:
b - the int to write.
Throws:
java.io.IOException

write

public void write(byte[] buf,
                  int off,
                  int len)
           throws java.io.IOException
Write the given sub-array to the file.

Overrides:
write in class java.io.OutputStream
Parameters:
buf - the array from which to write bytes.
off - The offset into the char array to begin writing from.
len - The number of characters to write.
Throws:
java.io.IOException - If an error occurs during the write.

close

public void close()
           throws java.io.IOException
Close the stream.

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.OutputStream
Throws:
java.io.IOException

flush

public void flush()
           throws java.io.IOException
Flush the stream.

Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.OutputStream
Throws:
java.io.IOException


Copyright ? 2002 Clarity Systems Group, LLC. All Rights Reserved.