Android - Grabar un fichero

 
Vista:
sin imagen de perfil

Grabar un fichero

Publicado por Francisco (6 intervenciones) el 19/12/2012 09:03:27
Hola a todos.
Estoy intentando guardar un fichero que descargo de internet. Las pruebas las hago con un png, pero tendria que servir tambien para cualquier fichero.
Hay varios problemas:
el fichero no es valido, es más pequeño que el original (2k de diferencia. de 30 aprox).y se ve claramente que no es el mismo tipo de fichero si lo visualizo en el bloc de notas.
Supongo que sea problema de que lo descargo como una cadena de texto... pero no lo tengo claro.
Ahí os pego el código y una muestra de los ficheros:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
public class getFile extends Thread{
	private String url="";
	private String contents ="";
	private File f;
		public getFile(String url){
			this.url=url;
			start();
		}
		public void run(){
		    try {
		        URLConnection conn = new URL(url).openConnection();
		        InputStream in = conn.getInputStream();
		        contents = readStream(in);
		    } catch (MalformedURLException e) {
		        contents= "MalformedURLException";
		    } catch (IOException e) {
		    	contents= "IOException";
		    }
		}
		public String getContenidoUrl() {
			return contents;
		}
		public boolean setURL(String url){
			if (url==null){ return false;}
			this.url= url;
			return true;
		}
		private String readStream(InputStream is) {
		    try {
		      ByteArrayOutputStream bo = new ByteArrayOutputStream();
		      int i = is.read();
		      while(i != -1) {
		        bo.write(i);
		        i = is.read();
		      }
		      return bo.toString();
		    } catch (IOException e) {
		      return "";
		      }
		}
		public boolean saveFile(){
			boolean resultado = false;
			FileOutputStream fptr;
			DataOutputStream f;
			try {
				fptr = new FileOutputStream("/storage/sdcard0/_spc/pruebas1.png");
				f= new DataOutputStream(fptr);
				f.writeBytes(contents.toCharArray());
				f.close();
				fptr.close();
				resultado = true;
 
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return resultado;
		}
}


Muestra del fichero descargado y grabado con la app:
1
2
3
4
5
6
7
8
9
10
ýPNG

 
IHDR   ý   ý   (<9ý   tEXtSoftware Adobe ImageReadyqýe<  y>IDATxýýý$eý>ýýy{rýý\wYXXý ýAýýýý&ýý;ý;ýýgýSÏý)‰(HýKKýgwv'ýýùýýýý}ýýýýýzýgvvýýýýýý®ýýýýýfý9Ñyl´	ýýý/N>—\rýšýwýEýýýuýýýýý|ýCý-ýýX{ýýý<ýýýýýývýýý7ýý"Yf_ýýýGydý;ýýýýýýYZ[[ýnzúýý?]hýyýýýý]ý>ýýx‘èyýýý?ýý?.4ýývýqýï¹ý€ýýý{ýýzýG ýYxýýnýýýý/ý

Y el archivo original:
‰PNG

   
IHDR   ´   Ó   (<9Ð   tEXtSoftware Adobe ImageReadyqÉe<  y>IDATxÚ콜$e>þ¼Õ¹{ržÙÙœwYXX¢ ’A ïþ&õÎ;½;õïgÆSϏÈ)‰(HŽKKØgwv'çÐÓ¹»Þßû}«ª»ªºz¦gvv–°µŸÚéê®®®ð¼ß÷ùfÆ9Ç‘å½¹lÚ´	¿øÅ/N>餓—\rÉæšššwþE ¬ï­µ¥¥Åý™Ï|æC‹-úµ€À X{Åëß<þøã³ßé×vä¿Ç֍7úï"Yf_ƒÁà–GydÖ;ùúØÊñÞYZ[[±nݺۺ»»?]hŸyóæýï®]»>åñxޑרyÌïå?


Que se os ocurre?
Gracias por anticipado.
Un saludo.
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
sin imagen de perfil

Grabar un fichero

Publicado por Francisco (6 intervenciones) el 19/12/2012 09:27:11
Solucionado.
La variable que recibe el fichero la cambié de string a byte[] y lo mismo a la hora de grabar.
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
1
Comentar
Imágen de perfil de xve
Val: 153
Bronce
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Grabar un fichero

Publicado por xve (87 intervenciones) el 19/12/2012 14:52:40
Muchas gracias por comentarlo Francisco!!!
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