Vamzdžiai IO suteikia ryšį tarp dviejų gijų, veikiančių JVM tuo pačiu metu. Taigi vamzdžiai naudojami ir kaip šaltinis, ir kaip paskirties vieta.
„PipedInputStream“ taip pat perduodama naudojant „PipedOutputStream“. Taigi duomenys gali būti rašomi naudojant PipedOutputStream ir gali būti rašomi naudojant PipedInputStream. Tačiau naudojant abi gijas vienu metu atsiras aklavietė.
Sakoma, kad vamzdis nutrūksta, jei gija, kuri teikė duomenų baitus prijungtam vamzdžių išvesties srautui, nebėra gyva.
Deklaracija:
public class PipedInputStream extends InputStream
Konstruktorius:
PipedInputStream() :
sukuria PipedInputStream, kad jis nėra prijungtas.
PipedInputStream(int pSize) :
sukuria PipedInputStream, kad jis nėra prijungtas prie nurodyto vamzdžio dydžio.
PipedInputStream (PipedOutputStream outStream) :
sukuria PipedInputStream, kuris yra prijungtas prie PipedOutputStream – „outStream“.
PipedInputStream(PipedOutputStream outStream int pSize) :
sukuria vamzdžių įvesties srautą, kuris yra prijungtas prie vamzdžių išvesties srauto su nurodytu vamzdžio dydžiu. Metodai:
int read ():
Reads the next byte of data from this piped input stream.The value byte is returned as an int in the range 0 to 255. This method blocks until input data is available the end of the stream is detected or an exception is thrown. Java
// Java program illustrating the working of read() methodimportjava.io.*;publicclassNewClass{publicstaticvoidmain(String[]args)throwsIOException{PipedInputStreamgeek_input=newPipedInputStream();PipedOutputStreamgeek_output=newPipedOutputStream();try{// Use of connect() : connecting geek_input with geek_outputgeek_input.connect(geek_output);// Use of read() method :geek_output.write(71);System.out.println('using read() : '+(char)geek_input.read());geek_output.write(69);System.out.println('using read() : '+(char)geek_input.read());geek_output.write(75);System.out.println('using read() : '+(char)geek_input.read());}catch(IOExceptionexcept){except.printStackTrace();}}}
Išvestis:
using read() : G using read() : E using read() : K
read(byte[] buferis int offset int maxlen):
java.io.PipedInputStream.read(baitas[] buferis int offset int maxlen) nuskaito iki didžiausių baitų duomenų iš Piped Input Stream į buferių masyvą. Metodas blokuoja, jei pasiekiamas srauto pabaiga arba taikoma išimtis. Sintaksė:
public int read(byte[] buffer int offset int maxlen) Parameters : buffer : the destination buffer into which the data is to be read offset : starting in the destination array - 'buffer'. maxlen : maximum length of array to be read Return : next 'maxlen' bytes of the data as an integer value return -1 is end of stream is reached Exception : -> IOException : if in case IO error occurs. -> NullPointerException : if buffer is null. -> IndexOutOfBoundsException : if offset is -ve or maxlen is -ve or maxlen > buffer.length - offset.
gauti (int byte):
java.io.PipedInputStream.receive(int byte) gauna duomenų baitus. Jei nėra įvesties, metodas blokuojamas. Sintaksė:
protected void receive(int byte) Parameters : byte : the bytes of the data received Return : void Exception : -> IOException : if in case IO error occurs or pipe is broken.
uždaryti () :
java.io.PipedInputStream.close() uždaro vamzdžių įvesties srautą ir išleidžia paskirtus išteklius. Sintaksė:
public void close() Parameters : -------------- Return : void Exception : -> IOException : if in case IO error occurs.
prisijungti (PipedOutputStream šaltinis):
java.io.PipedInputStream.connect (PipedOutputStream šaltinis) sujungia vamzdžių įvesties srautą su "šaltiniu" vamzdžių išvesties srautu ir tuo atveju, jei "šaltinis" yra vamzdžiai su kita srauto IO išimtimi Sintaksė:
public void connect(PipedOutputStream source) Parameters : source : the Piped Output Stream to be connected to Return : void Exception : -> IOException : if in case IO error occurs.
prieinama () :
java.io.PipedInputStream.available() grąžina Nr. baitų, kuriuos galima nuskaityti iš įvesties srauto iš tikrųjų neužblokavus. Sintaksė:
public int available() Parameters : ------------- Return : no. of bytes that can be read from Input Stream without actually being blocked. 0 if the stream is already closed but by invoking close() method Exception : -> IOException : if in case IO error occurs.
Java programa, paaiškinanti PipedInputStream klasės metodų veikimą: Java
// Java program illustrating the working of PipedInputStream// connect() read(byte[] buffer int offset int maxlen)// close() available()importjava.io.*;publicclassNewClass{publicstaticvoidmain(String[]args)throwsIOException{PipedInputStreamgeek_input=newPipedInputStream();PipedOutputStreamgeek_output=newPipedOutputStream();try{// Use of connect() : connecting geek_input with geek_outputgeek_input.connect(geek_output);geek_output.write(71);geek_output.write(69);geek_output.write(69);geek_output.write(75);geek_output.write(83);// Use of available() :System.out.println('Use of available() : '+geek_input.available());// Use of read(byte[] buffer int offset int maxlen) :byte[]buffer=newbyte[5];// destination 'buffer'geek_input.read(buffer05);Stringstr=newString(buffer);System.out.println('Using read(buffer offset maxlen) : '+str);// USe of close() method :System.out.println('Closing the stream');geek_input.close();}catch(IOExceptionexcept){except.printStackTrace();}}}
Išvestis:
Use of available() : 5 Using read(buffer offset maxlen) : GEEKS Closing the stream
Next Article: Java.io.PipedOutputStream klasė Java Sukurti viktoriną