com.threerings.export.util
Class LazyFileOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by com.threerings.export.util.LazyFileOutputStream
All Implemented Interfaces:
Closeable, Flushable

public class LazyFileOutputStream
extends OutputStream

Creates a FileOutputStream lazily, when data is actually written to the stream. For XML exports, this allows us to avoid overwriting any existing file when an exception is thrown in the process of building the object model before writing it out to the stream.


Field Summary
protected  File _file
          The file to which we will write.
protected  FileOutputStream _out
          The underlying file output stream, if created.
 
Constructor Summary
LazyFileOutputStream(File file)
          Creates a new lazy stream to write to the specified file.
LazyFileOutputStream(String file)
          Creates a new lazy stream to write to the named file.
 
Method Summary
 void close()
           
protected  void ensureInitialized()
          Creates the underlying output stream if necessary.
 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
 

Field Detail

_file

protected File _file
The file to which we will write.


_out

protected FileOutputStream _out
The underlying file output stream, if created.

Constructor Detail

LazyFileOutputStream

public LazyFileOutputStream(File file)
Creates a new lazy stream to write to the specified file.


LazyFileOutputStream

public LazyFileOutputStream(String file)
Creates a new lazy stream to write to the named file.

Method Detail

write

public void write(int b)
           throws IOException
Specified by:
write in class OutputStream
Throws:
IOException

write

public void write(byte[] b)
           throws IOException
Overrides:
write in class OutputStream
Throws:
IOException

write

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

flush

public void flush()
           throws IOException
Specified by:
flush in interface Flushable
Overrides:
flush in class OutputStream
Throws:
IOException

close

public void close()
           throws IOException
Specified by:
close in interface Closeable
Overrides:
close in class OutputStream
Throws:
IOException

ensureInitialized

protected void ensureInitialized()
                          throws IOException
Creates the underlying output stream if necessary.

Throws:
IOException