planet.io
Class NoReplacingOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by planet.io.NoReplacingOutputStream
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable

public class NoReplacingOutputStream
extends java.io.OutputStream

This class abstracts an stream that is capable of no replace the new saved status, according a specified boolean flag. If the file must not be replaced, a new file is created with a filename of type "filename_x", where "filename" is the specified base filename, and "x" is an iterative version number. That is, if "out" filename just exists, it attempts to create a new file "out_1"; if this just exist, it attempts to create a new file named "out_2"; ...

Author:
Jordi Pujol

Constructor Summary
NoReplacingOutputStream(java.lang.String filename, boolean replace)
          Constructor that initialize this stream with the specified base filename.
 
Method Summary
 void close()
           
 void flush()
           
 void write(byte[] b)
           
 void write(byte[] b, int off, int len)
           
 void write(int b)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NoReplacingOutputStream

public NoReplacingOutputStream(java.lang.String filename,
                               boolean replace)
                        throws java.io.FileNotFoundException
Constructor that initialize this stream with the specified base filename. The replace flag shows if the file must be replaced with new save status or not. If must not be replaced, a suffix "_x" is added to the filename, where "x" is the number of version.

Parameters:
filename - Base filename to save new status.
replace - Boolean flag that shows if the file must be replaced.
Throws:
java.io.FileNotFoundException - if the new desired file just exists.
Method Detail

write

public void write(int b)
           throws java.io.IOException
Specified by:
write in class java.io.OutputStream
Throws:
java.io.IOException
See Also:
OutputStream.write(int)

close

public void close()
           throws java.io.IOException
Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.OutputStream
Throws:
java.io.IOException
See Also:
OutputStream.close()

flush

public void flush()
           throws java.io.IOException
Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.OutputStream
Throws:
java.io.IOException
See Also:
OutputStream.flush()

write

public void write(byte[] b,
                  int off,
                  int len)
           throws java.io.IOException
Overrides:
write in class java.io.OutputStream
Throws:
java.io.IOException
See Also:
OutputStream.write(byte[], int, int)

write

public void write(byte[] b)
           throws java.io.IOException
Overrides:
write in class java.io.OutputStream
Throws:
java.io.IOException
See Also:
OutputStream.write(byte[])