code: public final void run()
     {
        try
        {
           copy( this.is, this.os );
        }
        catch ( IOException ioe )
        {
           log.error(ioe);
        }
        finally
        {
           try
           {
              this.is.close();
           }
           catch (IOException ioe)
           {
              log.error(ioe);
           }
           if (this.closeOsOnExit)
           {
              try
              {
                 this.os.flush();
                 this.os.close();
              }
              catch (IOException ioe)
              {
                 log.error(ioe);
              }
           }
        }
     }
docs: Copies all data from <b>input stream</b> to <b>output stream</b> (both passed to constructor) until job is killed