001 /* 002 * LAPIS lightweight structured text processing system 003 * 004 * Copyright (C) 1998-2002 Carnegie Mellon University, 005 * Copyright (C) 2003 Massachusetts Institute of Technology. 006 * All rights reserved. 007 * 008 * This library is free software; you can redistribute it 009 * and/or modify it under the terms of the GNU General 010 * Public License as published by the Free Software 011 * Foundation, version 2. 012 * 013 * LAPIS homepage: http://graphics.lcs.mit.edu/lapis/ 014 */ 015 package lapisx.io; 016 017 import java.io.*; 018 019 /** 020 * TeeStream is used to simultaneously write to an OutputStream 021 * (passed as an argument to the constructor) as bytes are read from 022 * the underlying InputStream. 023 */ 024 public class TeeStream extends FilterInputStream { 025 026 protected OutputStream out = null; 027 028 public TeeStream(InputStream in, OutputStream out) { 029 super(in); 030 this.out = out; 031 } 032 033 public int read() throws IOException { 034 int j = in.read(); 035 if (j != -1) { 036 out.write(j); 037 } 038 return j; 039 } 040 041 public int read(byte[] b) throws IOException{ 042 int j = in.read(b); 043 if (j != -1) { 044 out.write(b, 0, j); 045 } 046 return j; 047 } 048 049 public int read(byte[] b, int off, int len) throws IOException { 050 int j = in.read(b,off,len); 051 if (j != -1) { 052 out.write(b,off,j); 053 } 054 return j; 055 } 056 057 }