Streams y Buffered en java Escucha este post

0 comentarios

Una de las prioridades de cualquier programa es el intercambio de información, ya sea desde la memoria, desde un disco duro o memoria, en algún lugar en la red o incluso desde otro programa. Para dicho propósito se abre un Stream . Estas clases se alojan en el paquete java.io. Para el usoi de estas clases es necesario usar una excepción

Para la lectura de un Stream desde un archivo tenemos la clase FileInputStream cuyo metodo de lectura es read() y ciere es close. Cuando read devuelve -1 significa que a leído el ultmo byte de lo contrario devuelve dicho byte

import java.io.*;
public class InputStremDemo {
public static void main(String[] args) {
try { //excepsion
FileInputStream archivo = new FileInputStream("c:\\1.txt"); // instacia de la clase y constructor
boolean eof = false;//fin del archive negativo
int contador = 0;
while (!eof){//leer hasta eof sea true
int entrada = archivo.read();//leer
System.out.print(entrada+" ");
if (entrada==-1)// si la lectura devuelve -1 eof es verdadero
eof = true;
else
contador++;
}
archivo.close();
System.out.println("\n Bytes leidos "+contador);
} catch (IOException ex) {

System.out.println(ex.toString);
}
}
}

Para la escritura de datos es algo similar usamos la clase OutputStream y escribimos con el método write

import java.io.*;

public class FileOutputStreamDemo {
public static void main(String[] args) {
//bytes a escribir
int [] datos = {71,73,70,56,57,97,13,0,12,0,145,0,0,255,255,255,255,255,0,0,0,0,0,0,0,44,0,0,0,0,13,0,12,0,0,2,38,132,45,121,11,25,175,150,120,20,162,132,51,110,106,239,22,8,160,56,137,96,72,77,33,130,86,37,219,182,230,137,89,82,181,50,220,103,20,0,29};

try {//exception
FileOutputStream archivo = new FileOutputStream("pic.gif");// instancia y clase
for (int i=0;i
archivo.write(datos[i]);// escribir el item en cuestion
}
archivo.close();//cerramos
}catch (IOException e){// en caso de error
System.out.println("Error--"+e.toString());
}
}
}

Ahora la cuestión del buffered. Como digo alguien por ahí: “En la cuestión de comunicaciones la velosidad es lo importante”.Para esto usamos un bufered . Es tan simple como después de instanciar una clase pasarla por un buffered y luego leer o escribir desde dicho bufferred.

package streams;

import java.io.*;

public class EjemploBuffer {
public static void main(String[] args) {
Arg miArg= new Arg(0,100);
miArg.escribirStream();
miArg.leerStream();

}
}
class Arg{//constructor
int inicio, fin;
Arg(int st, int f){
this.inicio= st;
this.fin= f;
}

boolean escribirStream(){
try {
FileOutputStream archivo = new FileOutputStream("numeros.dat"); //instancia y constructor
BufferedOutputStream buff = new BufferedOutputStream(archivo);//pasamos el objeto por un buffered
for (int salida= inicio ;salida<=fin;salida++){ buff.write(salida);//escribimos desde el buffered
System.out.println(" "+salida);
}
buff.close();
return true;

} catch (IOException ex) {
return false;
}
}

boolean leerStream(){
try{
FileInputStream archivo = new FileInputStream("numeros.dat");
BufferedInputStream buff = new BufferedInputStream(archivo);
int in =0;
do {
in=buff.read();
if(in != -1 )
System.out.println(" "+in);
}while (in !=-1);
buff.close();
return true;
}catch (IOException ex){
Logger.getLogger(Arg.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
}
}