multioutputstream.java

来自「一个agent 工具包,可以开发移动设备应用,考虑了安全措施」· Java 代码 · 共 135 行

JAVA
135
字号
package SOMA.telnet;

import java.io.*;
import java.util.*;

public class MultiOutputStream extends OutputStream
{
  public LinkedList outs = new LinkedList();

  public synchronized OutputStream getFirst()
  {
    return (OutputStream)outs.getFirst();
  }

  public synchronized OutputStream setFirst( OutputStream out )
  {
    return (OutputStream)outs.set( 0, out );
  }

  public synchronized boolean add( OutputStream out )
  {
    return outs.add( out );
  }

  public synchronized boolean remove( OutputStream out )
  {
    return outs.remove( out );
  }

  public void write(int b)
  {
    Iterator i = outs.iterator();

    while( i.hasNext() )
    {
      OutputStream out = (OutputStream)i.next();

      try
      {
        out.write( b );
        out.flush();
      }
      catch( IOException e )
      {
        i.remove();
      }
    }
  }

  public void write(byte[] b)
  {
    Iterator i = outs.iterator();

    while( i.hasNext() )
    {
      OutputStream out = (OutputStream)i.next();

      try
      {
        out.write( b );
        out.flush();
      }
      catch( IOException e )
      {
        i.remove();
      }
    }
  }

  public void write(byte[] b, int off, int len)
  {
    Iterator i = outs.iterator();

    while( i.hasNext() )
    {
      OutputStream out = (OutputStream)i.next();

      try
      {
        out.write( b, off, len );
        out.flush();
      }
      catch( IOException e )
      {
        i.remove();
      }
    }
  }

  public void flush()
  {
    Iterator i = outs.iterator();

    while( i.hasNext() )
    {
      OutputStream out = (OutputStream)i.next();

      try
      {
        out.flush();
      }
      catch( IOException e )
      {
        i.remove();
      }
    }
  }

  public void close()
  {
    Iterator i = outs.iterator();

    while( i.hasNext() )
    {
      OutputStream out = (OutputStream)i.next();

      try
      {
        out.close();
      }
      catch( IOException e )
      {
        i.remove();
      }
    }

    outs.clear();
  }

  public String toString()
  {
    return "[MultiOutputStream (" + hashCode() + "): " + outs.size() + " streams]";
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?