1 34 35 36 package com.micronova.util; 37 38 import java.io.*; 39 40 41 42 public class Pipe implements Runnable 43 { 44 protected OutputStream _outputStream; 45 protected InputStream _inputStream; 46 protected byte[] _buffer; 47 protected boolean _doesCloseStream; 48 49 public static final int BUFFERSIZE = 1024; 50 51 public Pipe(InputStream inputStream, OutputStream outputStream, boolean doesCloseStream, byte[] buffer) 52 { 53 super(); 54 55 _inputStream = inputStream; 56 _outputStream = outputStream; 57 58 if (buffer == null) 59 { 60 buffer = new byte[BUFFERSIZE]; 61 } 62 63 _buffer = buffer; 64 _doesCloseStream = doesCloseStream; 65 } 66 67 public Pipe(InputStream inputStream, OutputStream outputStream, boolean doesCloseStream) 68 { 69 this(inputStream, outputStream, doesCloseStream, null); 70 } 71 72 public Pipe(InputStream inputStream, OutputStream outputStream) 73 { 74 this(inputStream, outputStream, true, null); 75 } 76 77 public void run() 78 { 79 InputStream inputStream = _inputStream; 80 OutputStream outputStream = _outputStream; 81 82 try 83 { 84 byte[] buffer = _buffer; 85 int bufferLength = buffer.length; 86 87 for (;;) 88 { 89 int readLength = inputStream.read(buffer, 0, bufferLength); 90 91 if (readLength > 0) 92 { 93 outputStream.write(buffer, 0, readLength); 94 95 outputStream.flush(); 96 } 97 else 98 { 99 break; 100 } 101 } 102 } 103 catch (Exception e) 104 { 105 e.printStackTrace(); 106 } 107 finally 108 { 109 if (_doesCloseStream) 110 { 111 try 112 { 113 outputStream.close(); 114 } 115 catch (Exception ee) 116 { 117 } 118 119 try 120 { 121 inputStream.close(); 122 } 123 catch (Exception ee) 124 { 125 } 126 } 127 } 128 } 129 } 130 | Popular Tags |