Java
Para obtener la información, el programa abre un conducto (stream) de entrada a la fuente de información (archivo, memoria, red...).
Para enviar información, el programa abre un conducto (stream) de salida al destino externo de información (archivo, red, memoria...)
Pasos para leer (Input): 1. 2. 3. 4. Crear el canal o conducto de transporte. Abrir elcanal o conducto (stream). Leer información mientras haya. Cerrar el canal.
Pasos para escribir (Output): 1. 2. 3. 4. Crear el canal o conducto de transporte. Abrir el canal o conducto (stream). Escribir información mientras haya. Cerrar el canal.
Los canales a utilizar dependerán esencialmente de dos factores:
1
ü De la fuente o sumidero (Archivos de disco, memoria, otro programa,puerto, red). ü De los tipos de datos a transportar (bytes o char). Incluso objetos (RMI). La tabla 1 resume los canales de más uso. Para darle más versatilidad a los canales se les pueden acoplar filtros (son mangueras conectadas). Algunos son: ü Bytes: BufferedInputStream (BufferedOutputStream) y DataInputStream (DataOutputStream). ü Caracteres: BufferedReader(BufferedWriter).
Código ejemplo(fragmento) que implementa algunos conductos (canales):
Ejemplos de flujos de bytes: Ejemplo 1: Conducto de entrada de archivo por el cual fluyen bytes. La fuente es un archivo en disco cuyo nombre es class.dat. Este archivo contiene la información escrita en él en bytes. Lectura:
try { /*crea el conducto para transporter los bytes desde el archive fuente class.dat hasta el programa*/FileInputStream file = new FileInputStream("class.dat"); boolean eof = false; int count = 0; //lee datos mientras haya while (!eof) { int input = file.read(); System.out.print(input + " "); if (input == -1) eof = true; else count++; } //cierra el conducto cuando se acban los datos file.close(); System.out.println("\nBytes read: " + count); } catch (IOException e) { //avisa por consola los errores de tipo I/OSystem.out.println("Error -- " + e.toString()); }
2
TABLA 1 FUENTE O SUMIDERO 1. Archivo en disco o cualquier dispositivo de almacenamiento (File) 2. Memoria (Array) 3. Otros programas (Piped) TIPO DE DATOS Bytes Caracteres Bytes Caracteres Bytes Caracteres Bytes Canal para LEER (Input) FileInputStream FileReader ByteArrayInputStream CharArrayInputStream PipedInputStream PipedReaderInputStream entrada SerialPort puerto : se crea Entrada=puerto.getInputStream() InputStream entrada ParallelPort puerto : se crea Entrada=puerto.getInputStream() Canal para ESCRIBIR (Output) FileOutputSream FileWriter ByteArrayOutputStream CharArrayOutputStream PipedOutputStream PipedWriter OutputStream salida SerialPort puerto : se crea salida=puerto.getOutputStream() OutputStream salida ParallelPortpuerto : se crea salida=puerto.getOutputStream()
4. Puerto Serial
5. Puerto Paralelo
Bytes
6. Puerto USB
Bytes InputStream entrada Socket socket : se crea Entrada=socket.getInputStream() ObjectOutputStream OutputStream entrada Socket socket : se crea salida=socket.getOutputStream() ObjectOutputStream
7. La Red
Bytes Objetos Serializados Bytes
8. Tarjetas (JNI)
1, 2 y 3 sondel paquete java.io
4 , 5 es de paquete javax.comm 6.javvax.usb
7 del paquete java.net 8. JNI
3
Conducto de salida de archivo por el cual fluyen bytes. El destino (sumidero) es un archivo en disco cuyo nombre es pic.gif. Escritura: //datos para grabar en el archivo int[ ] data = { 71, 73, 70, 56, 57, 97, 15, 0, 15, 0, 128, 0, 0, 255, 255, 255, 0, 0, 0, 44, 0, 0, 0, 0, 15, 0, 15, 0, 0,2, 33, 132, 127, 161, 200, 185, 205, 84, 128, 241, 81, 35, 175, 155, 26, 228, 254, 105, 33, 102, 121, 165, 201, 145, 169, 154, 142, 172, 116, 162, 240, 90, 197, 5, 0, 59 }; try {
/*crea el conducto para transporter los datos desde el programa hasta el sumidero. El sumidero es un archivo en disco denominado pic.gif)*/ FileOutputStream file = new FileOutputStream("pic.gif"); //lescribe datos...
Regístrate para leer el documento completo.