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

Problemas con FileInputStream

Estas en el tema de Problemas con FileInputStream en el foro de Java en Foros del Web. Bueeeenas foreros... De la forma más respetuosa solicito su ayuda!!!! Resulta que tengo este código. Código: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyBytes ...
  #1 (permalink)  
Antiguo 02/10/2009, 12:25
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 0
Busqueda Problemas con FileInputStream

Bueeeenas foreros...

De la forma más respetuosa solicito su ayuda!!!!

Resulta que tengo este código.

Código:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyBytes {

    public static void main(String[] args) throws IOException {
        FileInputStream in = null;
        FileOutputStream out = null;

        try {            
            in = new FileInputStream("C:\\MiCarpeta\\Entrada.txt");
            out = new FileOutputStream("C:\\MiCarpeta\\Salida.txt");
            int c;
            while ((c = in.read()) != -1) {
                out.write(c);

                System.out.println(Integer.toBinaryString(c) +" " + c + " " + (char)c);
            }
        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }
    }
}

Y me tira este resultado...


10100100 164 ¤
11100011 227 ã
10111100 188 ¼
1100001 97 a
1000001 65 A





La duda viene cuando reviso esos números con la tabla ASCII.
Resulta que el caracter A en ASCII es 65, y está bien.
Así como el caracter a, en ASCII ES 97, y está bien.

Pero el problema llega cuando reviso los otros caracteres, cuyos números no coinciden con la tabla extendida del ASCII

Y lo curioso es que me imprime el caracter como si supiera que el corresponde a ese número...

Porque ocurre eso???

Aqui un link de las tablas ASCII.
http://www.juntadeandalucia.es/averr...la%20ASCII.pdf
  #2 (permalink)  
Antiguo 05/10/2009, 00:35
 
Fecha de Ingreso: agosto-2009
Mensajes: 67
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Problemas con FileInputStream

Hola...

Java trabaja en UNICODE por defecto.
Echa un vistazo a la clase Charset de Java para ver qué otros charsets acepta. En las clases que implementan Reader puedes definir con qué charset quieres trabajar si lo declaras en el constructor (Fíjate que hay un constructor que tiene como parámetro un Charset un String charset).

Espero que te sirva.

Un saludo.


PD: Por cierto... ASCII son 128 caracteres, tal y como lo tienes en tu tabla (del 0 al 127). ¿Cómo esperabas ver en ASCII los caracteres 164, 188 y 227? ;)

Un saludo.
  #3 (permalink)  
Antiguo 05/10/2009, 01:44
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Problemas con FileInputStream

veo que ya han dado la respuesta. Hay que hacer la equivalencia Ascii-Unicode y así tendrás los valores, es decir, que si quieres tomar el valor ascii o haces una función de equivalencia o haces una tabla a la que tu código acceda para cotejar el valor ascii correspondiente al unicode y lo muestre, pero por detrás siga operando en unicode.
  #4 (permalink)  
Antiguo 05/10/2009, 08:55
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problemas con FileInputStream

Bien perfecto...
Gracias.

Curiosamente desconozco por completo el tema este sobre sistemas de codificación.
Y por eso me estaba fijando en la tabla EXTENDIDA y ahí no encontraba ningún número similar a los que me tira el programa.

Y bien... Gracias... A buscar la codificación de unicode... para ver la equivalencia
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 19:03.