Classe Java.io.PipedInputStream a Java
Tubs a IO proporcionen un enllaç entre dos fils que s'executen a JVM alhora. Així, les canonades s'utilitzen tant com a font com a destinació.
- PipedInputStream també es connecta amb PipedOutputStream. Per tant, les dades es poden escriure amb PipedOutputStream i es poden escriure amb PipedInputStream. Però utilitzar els dos fils alhora crearà un bloqueig per als fils.
- PipedOutputStream està enviant el final de la canonada. Les dades s'escriuen al PipedOutputStream. Es diu que la canonada està trencada si el PipedInputStream que estava llegint les dades ja no hi és.
Declaració:
public class PipedOutputStream
extends OutputStream
Constructor:
- PipedOutputStream(): crea un PipedOutputStream que no està connectat.
- PipedOutputStream(PipedOutputStream inStream): crea un PipedOutputStream que ell
està connectat a PipedInputStream - 'inStream'.
Mètodes:
write(): java.io.PipedOutputStream.write(int byte) escriu un byte especificat al flux de sortida canalitzat.
Sintaxi:
public void write(int byte)
Parameters :
byte : byte to be written
Return : void
Exception :
-> IOException : if in case IO error occurs.
write(byte[] buffer int offset int maxlen): java.io.PipedOutputStream.write (byte[] buffer int offset int maxlen) escriu maxlen bytes de les dades de la memòria intermèdia al flux de sortida canalitzat. El mètode es bloqueja si no s'escriu cap bytes al flux.
Sintaxi:
public void write(byte[] buffer int offset int maxlen)Java
Parameters :
buffer : data of the buffer
offset : starting in the destination array - 'buffer'.
maxlen : maximum length of array to be read
Return : void
Exception :
-> IOException : if in case IO error occurs.
// Java program illustrating the working of PipedInputStream // write(byte[] buffer int offset int maxlen) import java.io.*; public class NewClass { public static void main(String[] args) throws IOException { PipedInputStream geek_input = new PipedInputStream(); PipedOutputStream geek_output = new PipedOutputStream(); // Use of connect() : connecting geek_input with geek_output geek_input.connect(geek_output); byte[] buffer = {'J' 'A' 'V' 'A'}; // Use of write(byte[] buffer int offset int maxlen) geek_output.write(buffer 0 4); int a = 5; System.out.print('Use of write(buffer offset maxlen) : '); while(a>0) { System.out.print(' ' + (char) geek_input.read()); a--; } } }
Sortida:
Use of write(buffer offset maxlen) : J A V A
- close(): java.io.PipedOutputStream.close() tanca el flux de sortida canalitzat i allibera els recursos assignats.
Sintaxi:
public void close()
Parameters :
--------------
Return :
void
Exception :
-> IOException : if in case IO error occurs.
- connect(destí PipedInputStream): java.io.PipedOutputStream.connect(destí PipedInputStream) connecta el flux de sortida canalitzat al flux d'entrada canalitzat "destinació" i en cas que la "destinació" sigui canalitzada amb alguna altra excepció d'IO de flux
Sintaxi:
public void connect(PipedInputStream destination)
Parameters :
destination : the Piped Input Stream to be connected to
Return :
void
Exception :
-> IOException : if in case IO error occurs.
- flush(): java.io.PipedOutputStream.flush() esborra el flux de sortida.
Sintaxi:
public void flush()
Parameters :
------------
Return :
void
Exception :
-> IOException : if in case IO error occurs.
Codi Java que il·lustra el funcionament dels mètodes de classe PipedOutputStream:
Java// Java program illustrating the working of PipedInputStream // write() write(byte[] buffer int offset int maxlen) // close() flush() connect() import java.io.*; public class NewClass { public static void main(String[] args) throws IOException { PipedInputStream geek_input = new PipedInputStream(); PipedOutputStream geek_output = new PipedOutputStream(); try { // Use of connect() : connecting geek_input with geek_output geek_input.connect(geek_output); // Use of write(int byte) : geek_output.write(71); geek_output.write(69); geek_output.write(69); geek_output.write(75); geek_output.write(83); // Use of flush() method : geek_output.flush(); System.out.println('Use of flush() method : '); int i = 5; while(i > 0) { System.out.print(' ' + (char) geek_input.read()); i--; } // USe of close() method : System.out.println('nClosing the Output stream'); geek_output.close(); } catch (IOException except) { except.printStackTrace(); } } }
Sortida:
Use of flush() method :
G E E K S
Closing the Output stream