Учебники

Apache Commons IO — TeeInputStream

Это прокси InputStream, который прозрачно записывает копию всех байтов, прочитанных из проксируемого потока, в данный OutputStream. Прокси-входной поток закрывается при вызове метода close () на этом прокси. Он может использоваться для одновременного управления двумя потоками.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.io.input.TeeInputStream.

public class TeeInputStream
   extends ProxyInputStream

Пример класса TeeInputStream

В этом примере закрытие TeeInputStream закрывает TeeInputStream, а также объекты TeeOutputStream.

IOTester.java

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import org.apache.commons.io.input.TeeInputStream;
import org.apache.commons.io.output.TeeOutputStream;

public class IOTester {

   private static final String SAMPLE = "Welcome to TutorialsPoint. Simply Easy Learning.";
   public static void main(String[] args) {
      try {
         usingTeeInputStream();
      } catch(IOException e) {
         System.out.println(e.getMessage());
      }
   }

   public static void usingTeeInputStream() throws IOException {
      TeeInputStream teeInputStream = null;
      TeeOutputStream teeOutputStream = null;

      try {
         ByteArrayInputStream inputStream = new ByteArrayInputStream(SAMPLE.getBytes("US-ASCII"));
         ByteArrayOutputStream outputStream1 = new ByteArrayOutputStream();
         ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();

         teeOutputStream = new TeeOutputStream(outputStream1, outputStream2);
         teeInputStream = new TeeInputStream(inputStream, teeOutputStream, true);
         teeInputStream.read(new byte[SAMPLE.length()]);

         System.out.println("Output stream 1: " + outputStream1.toString());
         System.out.println("Output stream 2: " + outputStream2.toString());

      } catch (IOException e) {
         System.out.println(e.getMessage());
      } finally {
         //teeIn.close() closes teeIn and teeOut which in turn closes the out1 and out2.       
         try { 
            teeInputStream.close(); 
         } catch (IOException e) { 
            System.out.println(e.getMessage());
         }
      }
   }
}

Выход

Будет напечатан следующий результат.