Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

[JAVA] Duda sobre el método read()

Participa en el tema [JAVA] Duda sobre el método read() en el foro Programación.
Hola a todos, tengo una pequeña duda en java y me gustaría que me ayudaran ...

Buscar en este tema:
 
  •  
    #1 [JAVA] Duda sobre el método read()
    Hola a todos, tengo una pequeña duda en java y me gustaría que me ayudaran a resolverla.
    Resulta que, por lo que tengo entendido, que el método read de la clase InputStream lee bytes individuales de un flujo de etrada y devuelve un entero int correspondiente al valor ASCII del carácter leído. Bueno hice un pequeño programa que me permite leer un número, por ejemplo ingresé el 3, y me devuelve el 51; esto quiere decir que en vez de capturar un valor byte (tengo entendido que en java, 'byte' es un tipo primitivo, entero entre -128 y 127) lee un caracter y convierte a int . Cuál es le diferencia cuando dicen lectura de flujos de bytes con flujos de caracteres, porque con este método me arme un enrredo fenomenal. Bueno se varias otras formas de leer caracteres utilizando los 'parse' de las clases que encapsulan datos primitivos como Integer, Float, etc.., pero me gustaría saber como utilizar read de forma conveniente gracias.
    +
     
    0
    Me gusta
     
    | Más
  • #2 Re: Duda sobre el método read()

    Originalmente publicado por Aydaroo Ver mensaje
    Hola a todos, tengo una pequeña duda en java y me gustaría que me ayudaran a resolverla.
    Resulta que, por lo que tengo entendido, que el método read de la clase InputStream lee bytes individuales de un flujo de etrada y devuelve un entero int correspondiente al valor ASCII del carácter leído. Bueno hice un pequeño programa que me permite leer un número, por ejemplo ingresé el 3, y me devuelve el 51; esto quiere decir que en vez de capturar un valor byte (tengo entendido que en java, 'byte' es un tipo primitivo, entero entre -128 y 127) lee un caracter y convierte a int . Cuál es le diferencia cuando dicen lectura de flujos de bytes con flujos de caracteres, porque con este método me arme un enrredo fenomenal. Bueno se varias otras formas de leer caracteres utilizando los 'parse' de las clases que encapsulan datos primitivos como Integer, Float, etc.., pero me gustaría saber como utilizar read de forma conveniente gracias.
    Primero hay un error, el resultado de hacer read sobre un InputStream te devuelve la cantidad de caracteres efectivamente leidos, esto te sirve por que si es un stream con buffer o demas al estilo socket no siempre vas a poder leer en todo momento, entonces quien sabe mandaste a leer 25 bytes y solo habia para leer 15 en ese momento entonces te lee 15 dejandotelos en el array y devolviendote 15 como retorno del metodo...

    Ahora llendo a lo que planteas, si vos pones a leer un byte o un conjunto de bytes por ejemplo y escribis el caracter 3 lo que hace en este caso la entrada estandard de Java, o del sistema operativo o no se bien que es lo que hace, es convertirte ese caracter a un byte, y luego devolverte ese byte, porque cuando vos escribis del teclado vos escribis caracteres que no es lo mismo que un byte, ya que dependen del encoding que uses, si usas ASCII, EBCDIC, UTF-8, UTF-16 etc va a depender de lo que vale cada caracter como bytes...


    Si queres transformar entre valores de estos tipos tenes las clases Byte y Char que tienen metodos como pro ejemplo valueOf(...)

    byte pequenio = 5;
    char caracter = Char.valueOf(pequenio);

    Y viceversa.

    Saludos
    Pablo
    Me gusta este mensaje
  • #3 Re: Duda sobre el método read()

    el programa que hiciste convierte la entrada a un int o algun tipo númerico?
    Me gusta este mensaje
  • #4 Re: Duda sobre el método read()

    Originalmente publicado por cadaar Ver mensaje
    el programa que hiciste convierte la entrada a un int o algun tipo númerico?
    a un int

    Originalmente publicado por ExtrañoInocente Ver mensaje
    Primero hay un error, el resultado de hacer read sobre un InputStream te devuelve la cantidad de caracteres efectivamente leidos, esto te sirve por que si es un stream con buffer o demas al estilo socket no siempre vas a poder leer en todo momento, entonces quien sabe mandaste a leer 25 bytes y solo habia para leer 15 en ese momento entonces te lee 15 dejandotelos en el array y devolviendote 15 como retorno del metodo...

    Ahora llendo a lo que planteas, si vos pones a leer un byte o un conjunto de bytes por ejemplo y escribis el caracter 3 lo que hace en este caso la entrada estandard de Java, o del sistema operativo o no se bien que es lo que hace, es convertirte ese caracter a un byte, y luego devolverte ese byte, porque cuando vos escribis del teclado vos escribis caracteres que no es lo mismo que un byte, ya que dependen del encoding que uses, si usas ASCII, EBCDIC, UTF-8, UTF-16 etc va a depender de lo que vale cada caracter como bytes...


    Si queres transformar entre valores de estos tipos tenes las clases Byte y Char que tienen metodos como pro ejemplo valueOf(...)

    byte pequenio = 5;
    char caracter = Char.valueOf(pequenio);

    Y viceversa.

    Saludos
    Pablo
    Disculpa es que estoy recién aprendiendo y quizás para ti sea muy obvia la pregunta. Entonces, si yo ejecuto hago lo siguiente:

    int a;
    .....
    .....
    a = System.in.read();
    .....

    la sentencia System.in.read() estaría leyendo un caracter y devolvería el valor ASCII del caracter leído, ese valor se asignaría a la variable entera 'a'. Por lo que vi en un libro. Pero si yo hago lo siguiente.

    int a;
    ......
    ......
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader flujoE = new BufferedReader(isr);
    a = flujoE.read();

    en este caso el método devolvería la cantidad de caracteres efectivamente leídos. Osea no es lo mismo que el código anterior. Es cierto eso?. Si es así, e gustaría que me aclares eso del buffer y que lo hace ser distinto del código anterior
    Aprovechando el post, cuando hablan de flujos de bytes hablan de números enteros comprendidos entre -128 a 127 cierto?. Bueno eso nada más disuculpa por lo testarudo
    Me gusta este mensaje
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 3 RESPUESTAS
  • 2027 VISTAS
  • 3 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB