PipedInputStream и PipedOutputStream
Интересное применение могут найти специализированные потоковые классы. Так, например, два класса, PipedInputStream и PipedOutputStream, введены в иерархию классов Java для создания каналов (pipes), передачи данных от одной программы к другой или от одного потока выполнения (thread) к другому. Каналы широко используются в операционных системах UNIX.
Каналы удобны как средство переопределения потоков, как это делается операторами ">", ">>" или "<" операционной системы для переназначения ввода и вывода данных для программы. В Java создание такого канала сводится к двум строкам исходного текста:
outPipe = new PipedOutputStream (); inPipe = new PipedInputStream(outPipe);