Java - traducir Código - ayuda

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

traducir Código - ayuda

Publicado por mario (4 intervenciones) el 29/01/2020 04:40:59
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public void listarimag(int id,HttpServletResponse response){
    String sql="select * from producto where idProducto="+id;
        InputStream inputStream=null; //para que sirve y que hace?
        OutputStream outputStream= null;/para que sirve y que hace?
        BufferedInputStream bufferedInputStream=null;/para que sirve y que hace?
        BufferedOutputStream bufferedOutputStream=null;/para que sirve y que hace?
    try {
            outputStream=response.getOutputStream(); //cual es su funcion?
            con=cn.Conexion();
            ps=con.prepareStatement(sql);
            rs=ps.executeQuery();
            if(rs.next()){
            inputStream=rs.getBinaryStream("Foto");
 
            }
            bufferedInputStream=new BufferedInputStream(inputStream); //??
            bufferedOutputStream=new BufferedOutputStream(outputStream);//??
            int i=0;
            while((i=bufferedInputStream.read())!=-1){ //que quiere hacer con todo esto
            bufferedOutputStream.write(i);
 
 
            }
 
        } catch (Exception e) {
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

traducir Código - ayuda

Publicado por Franklin (179 intervenciones) el 29/01/2020 13:32:59
Input / outPutStream te sirve para leer y escribir archivos, fotos, etc. Desde crear documentos excel hasta descargar imagenes o ficheros desde la web.

en este caso el inputStream recibe como valor desde la base de datos de la tabla "Foto" del id indicado y el outputStream el valor de la webservices donde se recibirá


while((i=bufferedInputStream.read())!=-1){ // <i> lee la respuesta de la base de datos y mientras tenga bytes por leer o sea diferente a -1
bufferedOutputStream.write(i); // se imprime en el receptor del responde (webservices, servlet, pagina etc etc)

}
en teoria defines input/output y los buffered que funcionan de manera mas eficiente, solo para leer de la base de datos una supuesta foto y lo manda al valor receptor de la servlet o webservice


Link de apoyo.

http://www.reloco.com.ar/prog/java/io.html
https://aprenderaprogramar.com/foros/index.php?topic=3240.0
https://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/api/javax/servlet/http/HttpServletResponse.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

traducir Código - ayuda

Publicado por mario (4 intervenciones) el 29/01/2020 23:03:25
muchas gracias por la ayuda y los enlaces ,revisare para entenderlo mas a fondo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

traducir Código - ayuda

Publicado por pablo (239 intervenciones) el 29/01/2020 13:58:41
Hola Mario

Bueno he trabajado muy poco con los output e inputstream pero intentare explicarlo y darte algunos enlaces para que los leas y entiendas un poco mejor.

Verás los stream es una forma más rápida que tiene java de leer y escribir cualquier tipo de datos para leer uno se utiliza el inputstream que puedes observar en la primera línea de tu código y el segundo para la escritura, estos dos respectivamente.

1
2
InputStream inputStream=null;
OutputStream outputStream= null;

Luego los BufferedStream entiendanse los output y los input son una forma aún más eficiente y reservando un espacio de memoria para que haga la tarea más rápida y estás son subclases de los output e inputStream y se combinan con las primeras dos para que sea más rápido dicho proceso.

Por eso realiza estas instancias de dichos objetos:

1
2
bufferedInputStream=new BufferedInputStream(inputStream);
bufferedOutputStream=new BufferedOutputStream(outputStream);


oohh y casi se me olvidaba jaja

1
outputStream=response.getOutputStream();

Esa línea permite escribir en el outputstream elementos de tipo binario o que este preparada para recibirlo.

1
bufferedOutputStream.write(i);

En esa línea específicamente es donde haces uso de los archivos binarios los que guardastes en el input

y te preguntarás donde guarde esos archivos binarios

pues acá

1
inputStream=rs.getBinaryStream("Foto");

Esos archivos binarios tienes que convertirlos de alguna manera para que el usuario o el cliente los pueda entender.

Luego y por último y disculpandome del enredo pero espero que lo puedas entender

1
while((i=bufferedInputStream.read())!=-1){

Esa línea de código verifica de que no este vacio tu buffer ya que sí está vació de nada sirve escribir algo en el.

Y bueno esa es toda la explicación de tu código, de todos modos acá unos enlaces por sí no entiendes mucho de lo que expliqué

https://www.fdi.ucm.es/profesor/jpavon/poo/2.13.EntradaySalida.pdf

https://personales.unican.es/corcuerp/java/Slides/Streams_I_O.pdf

https://docs.oracle.com/javaee/5/api/javax/servlet/ServletResponse.html


Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

traducir Código - ayuda

Publicado por mario (4 intervenciones) el 29/01/2020 23:03:58
muchas gracias por la ayuda y los enlaces ,revisare para entenderlo mas a fondo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar