Java - duda con available()

   
Vista:

duda con available()

Publicado por tomas (4 intervenciones) el 21/02/2010 23:51:28
Hola. Agradecería que alguien me solucionase la siguiente duda:
Al ejecutar el siguiente programa, siempre me considera entrada.available()=0 y, por tanto, no puedo introducir ninguna información por teclado. Siempre me devulve "No se han encontrado datos en la entrada Estandar".¿Cómo puedo lograr introducir datos por el teclado usando el método available()?Quiero utilizar este método para comprobar si hay información disponible en la entrada estandar y si no la hay introducirla por un fichero.
A continuación el código.Gracias de antemano.

import java.io.IOException;
import java.io.InputStream;

public class TiposEntradaEstandarPipe
{
public static void main(String[] args)
{
InputStream entrada = System.in;
int leido = 0;
try
{
if(entrada.available()>0)
{
while((leido = entrada.read()) != -1)
System.out.print((char)leido);
}
else
System.out.print("No se han encontrado datos en la entrada Estandar");
}catch (IOException e)
{
System.out.print("Ha ocurrido un Error al leer la entrada Estandar");
System.out.print(e.getMessage());
}
}
}
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

RE:duda con available()

Publicado por Tom (914 intervenciones) el 22/02/2010 09:39:22
En la documentación de InputStream.available() (unas 4 líneas de texto) dice:

"The available method for class InputStream always returns 0."
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

RE:duda con available()

Publicado por tomas (4 intervenciones) el 22/02/2010 09:52:05
Gracias por contestar. Debo de haber entendido mal el uso de este método. Lo que no comprendo entonces es la utilidad del código que he colgado, el cual lo he copiado tal cual de un curso de java (en teoría debería de estar bien). ¿Alguien podría explicarme lo que hace dicho programa? Gracias.
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

RE:duda con available()

Publicado por Tom (914 intervenciones) el 23/02/2010 10:19:06
Sin duda, ese curso es demasiado viejo (obsoleto, diría yo). En java 1 "funcionaba" así, pero el problema es que no funcionaba igual en window$ que en unix ... así que se reespecificó el método en java 2. Como regla general ... available() sólo funcionará con sockets. Para cualquier otra cosa se suele usar o un Reader, o la lectura bloqueante "de toda la vida" :)

Te recomendaría leer las introducciones de la doc. oficial de java.io y java.nio ...

Y, si tienes mucha prisa, échale un ojo a la clase InputStreamReader.

Por otra parte lo que intentas hacer se suele resolver pasando parámetros al programa. Generalmente se hace código para obtener de los parámetros de entrada un nombre de fichero; si este nombre es '-' o no se recibe, entonces se usa la entrada standard.
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

RE:duda con available()

Publicado por tomas (4 intervenciones) el 23/02/2010 10:48:23
Muchas gracias por la aclaración. Creo que ya lo voy pillando. Un saludo.
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