Foro de elhacker.net

Programación => Java => Mensaje iniciado por: wilmer.rondon en 15 Junio 2007, 20:51 pm



Título: problema con BufferedReader
Publicado por: wilmer.rondon en 15 Junio 2007, 20:51 pm
hola:

Tengo un ciclo para leer de buffer y luego imprimir lo que leyo en un TextArea y la manera de detener el ciclo es cuando el buffer sea Null.

en el Text Area deberia aparece escrito la salida de un Script que ejecuto en UNIX como se ve en color rojo.

Ingrese una opcion [1]Prueba   [2]Salir

una vez que aparece esto se debe ingresar la opcion y sigue la ejecucion del script.

pero aparentemente el buffer nunca se hace null y se queda imprimiendo siempre lo mismo en un ciclo infinito y no se le pueden enviar los datos para la seleccion de la opcion [1] o [2]...

alguien tendra alguna sugerencia para que esto no suceda??

este es el codigo del hilo que lee el buffer de entrada.

muchas gracias

prestar atencion en esta parte del codigo

Código:
                                        while ((line = in.readLine()) != null) 
                                        {
                                                t.printOut(line);
                                        }


Código:
        class InputThread implements Runnable 
        {
                BufferedReader in;
                Main t;
                public boolean keepGoing;
 
                public InputThread(BufferedReader in, Main t)
                {
                        this.in = in;
                        this.t = t;
                        this.keepGoing = true;
                }
 
                public void quitIt()
                {
                        keepGoing = false;
                }
 
                public void run()
                {
                        while (keepGoing)
                        {
                                String line;
                                try
                                {
                                        while ((line = in.readLine()) != null)
                                        {
                                                t.printOut(line);
                                        }
                                }
                                catch (IOException e) 
                                {
                                        t.printOut(e.getMessage());
                                }
                        }
                }
        }


Título: Re: problema con BufferedReader
Publicado por: flowflow en 16 Junio 2007, 14:10 pm
Hola, yo creo que tienes el problema en el while del keepGoing ya que nunca lo pones a false. Podrias solucionarlo de la siguiente forma:
Código:
public void run() 
{

                         while (keepGoing)
                        {
                                String line;
                                try
                                {
                                        while ((line = in.readLine()) != null)
                                        {
                                                t.printOut(line);
                                        }
                                }
                                catch (IOException e) 
                                {
                                        t.printOut(e.getMessage());
                                        e.printStackTrace();
                                }
                               
                                 quitIt();

                        }
}


Aunque realmente no entiendo para que usas ese segundo while, asi que tb podria quedar así:
Código:
public void run() 
{
         String line;
         try
        {
                    while ((line = in.readLine()) != null)
                    {
                             t.printOut(line);
                     }
         }
         catch (IOException e) 
         {
                 t.printOut(e.getMessage());
                 e.printStackTrace();
         }
}



Espero haber sido de utilidad, si me he confundido en algo hazmelo saber please.

P: Es recomendable añadir  e.printStackTrace(); dentro de los catch ya que da mas info del error



Título: Re: problema con BufferedReader
Publicado por: wilmer.rondon en 19 Junio 2007, 21:49 pm
hola:
gracias por tu sugerencia...

la verdad solo modifique esta parte del codigo y me funcionó perfectamente:

esta linea de codigo

Código:
process = Runtime.getRuntime().exec("/bin/bash");

lo cambie por esta linea

Código:
process = Runtime.getRuntime().exec("/bin/sh");

muchas gracias por tu ayuda...