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

Descarga de ficheros

Estas en el tema de Descarga de ficheros en el foro de Java en Foros del Web. Buenas a todos, Estoy aquí intentando descargarme desde un servidor unos ficheros PDF. Lo malo es que ciertos caracteres, en algún momento del proceso, algunos ...
  #1 (permalink)  
Antiguo 16/01/2009, 07:17
 
Fecha de Ingreso: abril-2007
Mensajes: 65
Antigüedad: 17 años, 7 meses
Puntos: 0
Descarga de ficheros

Buenas a todos,

Estoy aquí intentando descargarme desde un servidor unos ficheros PDF. Lo malo es que ciertos caracteres, en algún momento del proceso, algunos caracteres me los modifica, sin razon de ser. ¿Conocéis alguna forma de bajar exclusivamente binarios? Creo que de ese modo se salataria este error.

el código que uso es el siguiente:

Código:
URL url = new URL("http://host");
InputStream ins = url.openConnection().getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
int str;
        
BufferedWriter out;
String read;
out = new BufferedWriter(new FileWriter("C:/mi.pdf"));
        
while((str = reader.read()) != -1){
         out.write(str);
}
out.close();
  #2 (permalink)  
Antiguo 16/01/2009, 11:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: Descarga de ficheros

Reader y Writer es la familia de clases para tratar con flujos de carácteres, no de bytes. Para tratar ficheros binarios hay que usar la familia de los stream.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #3 (permalink)  
Antiguo 19/01/2009, 02:45
 
Fecha de Ingreso: abril-2007
Mensajes: 65
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Descarga de ficheros

¿No es lo que estoy usando con la Clase InputStream?. También me he planteado si es cosa de la codificación de caracteres, sin embargo, he probado "US-ASCII", "ISO-8859-1", "UTF-8", "UTF-16BE", "UTF-16LE", "UTF-16" y nada de nada.

Al estar en la plataforma Win, la codificación por defecto es Cp1252.
  #4 (permalink)  
Antiguo 19/01/2009, 03:19
 
Fecha de Ingreso: abril-2007
Mensajes: 65
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Descarga de ficheros

Al final tengo una solución independiente de las codificación. Gracias GreenEyed por la pista. La dejo aquí por si alguien la necesita alguna vez:

Código:
URL url = new URL("http://host");
InputStream ins = url.openConnection().getInputStream();
BufferedInputStream bufferedInput = new BufferedInputStream(ins);
        
int str;

FileOutputStream fileOutput = new FileOutputStream ("C:/mi.pdf");
BufferedOutputStream bufferedOutput = new BufferedOutputStream(fileOutput);

while((str = bufferedInput.read()) != -1){
   bufferedOutput.write(str);
}

bufferedOutput.close();
  #5 (permalink)  
Antiguo 19/01/2009, 04:28
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: Descarga de ficheros

Eso mismo. No es solo el flujo origen (InputStream) el que afecta, si no todos los que pones en el "camino", por eso al pasarlos por un Reader (InputStreamReader) estaba transformandote los bytes (para cambiarlos de codificacion) y de ahí el problema.

Me alegro que lo hayas encontrado .
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
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 22:22.