Foros del Web » Programación para mayores de 30 ;) » Java »

Me pueden explicar este codigo

Estas en el tema de Me pueden explicar este codigo en el foro de Java en Foros del Web. Hola, me podrian explicar para que sirve escribir while (i != -1) en ese ciclo, no entiendo cual es la funcion del valor -1 y ...
  #1 (permalink)  
Antiguo 19/10/2009, 08:16
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 18 años, 2 meses
Puntos: 3
Me pueden explicar este codigo

Hola, me podrian explicar para que sirve escribir while (i != -1) en ese ciclo, no entiendo cual es la funcion del valor -1 y luego para que sirve la parte de pw.print((char) i);.

En realidad no entiendo la funcion de esta parte en el codigo
ServletInputStream in = request.getInputStream();
int i = in.read();
while (i != -1) {
pw.print((char) i);
i = in.read();

gracias
Código:
import java.io.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletInputStream;
public class FileUploadBean {
	
public void doUpload(HttpServletRequest request) throws
IOException {
PrintWriter pw = new PrintWriter(
new BufferedWriter(new FileWriter("Demo.out")));
ServletInputStream in = request.getInputStream();
int i = in.read();
while (i != -1) {
pw.print((char) i);
i = in.read();
}
pw.close();
}
}
  #2 (permalink)  
Antiguo 19/10/2009, 08:59
Avatar de cptanalatriste  
Fecha de Ingreso: octubre-2008
Ubicación: Lima, Perú
Mensajes: 118
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Me pueden explicar este codigo

De la documentación de InputStream (http://java.sun.com/j2se/1.4.2/docs/...eam.html#read())

Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

O sea, cuando ya no hay bytes disponibles que leer, el método read devuelve -1; por eso se establece esa condicional en el bucle while.

Saludos, espero sea de ayuda,
__________________
Carlos G. Gavidia
Sun Certified Professional
IBM Certified Solution Designer
http://certified-es.blogspot.com/
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:52.