Foro de elhacker.net

Programación => Java => Mensaje iniciado por: novalida en 10 Agosto 2009, 22:04 pm



Título: Duda con método available()
Publicado por: novalida en 10 Agosto 2009, 22:04 pm
hola!!!
tengo el siguietne código extraído de un ejercicio de Fco. Javier Ceballos ("Java 2: Curso de programación"):
Código:
import java.io.*;

public class CTest {

public static void main (String[]args)
{
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader flujoE = new BufferedReader (isr);
PrintStream flujoS = System.out;

char car = 0;
int ncars;

try
{
flujoS.print("Caracter: ");
car = (char)flujoE.read();
flujoS.println(car);


ncars = flujoE.available();
flujoE.skip(ncars);


flujoS.print("Caracter: ");
car = (char)flujoE.read();
flujoS.print(car);
}

catch(IOException e)
{

}
}
}


el problema y duda que tengo es que la línea :
Código:
ncars = flujoE.available();

produce un error ya que el método available() no está definido para el tipo BufferedReader.

En un ejemplo del libro el código es así tal cual( no lo he modificado), sin embargo cuando intento compilar el programa me lanza el error en dicha línea. Es una errata del libro o estoy haciendo algo mal???
por otro lado he sustituido ese intento de vaciar el buffer con:
Código:
System.in.skip(System.in.available());
pero no se vacía el buffer. En este otro caso por qué no funciona el vaciado???

Gracias y espero respuesta :)


Título: Re: Duda con método available()
Publicado por: 1mpuls0 en 11 Agosto 2009, 06:20 am
Hola mira no estoy seguro de que es lo que quieres hacer, lo unico que entiendo es que estas manejando entrada y salida de datos, trate de revisar tu codigo.


Citar
import java.io.*;
import java.io.FileInputStream;
import java.util.*;

public class CTestF {
   
   public static void main (String[]args)throws Exception
   {
      InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader (isr);      
      PrintStream flujoS = System.out;
      
      InputStream iS = new FileInputStream("Hola.txt");//usando el metodo available()
      
      char car = 0;
      //int ncars;
      int tam;
      //int s1;
      //String cad="";
      
      try
      {
         //1
         flujoS.print("Caracter: ");
         car = (char)br.read();
         flujoS.println(car);
         
         //2
         tam = Integer.parseInt(br.readLine());  //el metodo readLine() pertenece a la clase BufferedReader
         br.skip(tam);
         
         //3
         tam = iS.available(); //el metodo available es de la clase InputStream
         br.skip(tam);//el metodo skip pertenecen a la clase System
         
         //4
         flujoS.print("Caracter: ");
         car = (char)br.read();
         flujoS.print(car);
         
      }catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}

Me funciona...
Pero...

Lo que no entiendo es por que si dejo todo asi como está no funciona, pero si por ejemplo dejo entre comentarios 3 de ellos [cual se] si funcion  :-\

Te dejo estas paginas para que veas bien sobre estos temas.

http://www.cica.es/formacion/JavaTut/Cap8/entrada.html

http://www.java2s.com/Code/JavaAPI/java.io/FileInputStreamavailable.htm

http://www.altatorre.com/webclase/java/tramas.htm

Bueno solo espero no haberte confundido.

Saludos.



Título: Re: Duda con método available()
Publicado por: Debci en 11 Agosto 2009, 15:25 pm
si no me equivoco es objeto.isAvailable , y este devuelve un Booleano o binario tipo true o false (0 o 1), no stoy del todo seguro.

saludos


Título: Re: Duda con método available()
Publicado por: 1mpuls0 en 11 Agosto 2009, 16:42 pm
http://foro.elhacker.net/java/duda_basica_con_metodo_available-t257298.0.html

¿¿¿????