Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 27/03/12, 18:31:28
Array

[xs_avatar]
monchyrcg monchyrcg no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Tu operador: Orange
Leer xml y luego escribir sobre él

Buenas tardes, os cuento. Tengo un archivo en la memoria externa del teléfono y quiero leer el archivo y luego escribir al final de este archivo hago esto pero no me funciona
Código:
File ruta_sd = Environment.getExternalStorageDirectory();
			 
			    File f = new File(ruta_sd.getAbsolutePath(), "zonaVuelo/sitios.xml");
			    
			    BufferedReader fin = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
			    String a = null;
			   
			    	a = fin.readLine();
			    	fin.close();
			    OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream(f));
			    
			    fout.write(a+"\n Texto de prueba2.");
			    fout.close();
Se supone que lee lo guarda en la variable "a" y luego escribo a +Texto.... no?

Pues a mi siempre me aparece esto en zonaVuelo/sitios.xml:
null
Texto de Prueba2.

No lo entiendo

Última edición por monchyrcg Día 28/03/12 a las 19:27:42.
Responder Con Cita


  #2  
Viejo 28/03/12, 11:11:49
Array

[xs_avatar]
monchyrcg monchyrcg no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Tu operador: Orange
SOLUCIÓN:
Código:
File ruta_sd = Environment.getExternalStorageDirectory();
          
             File f = new File(ruta_sd.getAbsolutePath(), "zonaVuelo/sitios.xml");
             
             BufferedReader fin = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
             String buffer = new String();
             String leido = new String();
             while((buffer = fin.readLine())!=null)
                  leido += buffer;
                
                fin.close();
             OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream(f));
             
             fout.write(leido+"\n Texto de prueba2.");
             fout.close();
Responder Con Cita
  #3  
Viejo 28/03/12, 19:28:03
Array

[xs_avatar]
monchyrcg monchyrcg no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Tu operador: Orange
Reabro el tema, lo primero muchas gracias por el consejo jmtu, sigo tu consejo.

Ahora tengo un problema mayor y es que solo me deja escribir una vez en el fichero.
La primera vez que arranco la aplicación todo me va bien luego me da una NullPointerException en esta línea:

Código:
while(!(readString = buffer.readLine()).equals("</sitios>"))


No lo entiendo. Me he dado cuenta que si reemplazo el archivo si me funciona pero de nuevo solo una vez. Alguien me ayuda por favor

Última edición por monchyrcg Día 28/03/12 a las 20:32:15.
Responder Con Cita
  #4  
Viejo 30/03/12, 19:36:17
Array

[xs_avatar]
Afsoon Afsoon no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 225

Si quieres leer o escribir ficheros .xml usa la clases para eso especificamente como puede ser SAX, DOM, XMLPull y otro que se me olvida. Te recomiendo XMLPull porque es mas manejable (en mi opinión y suelen recomendar en varias páginas).

Yo si quieres te puedo ayudar con XMLPull (aunque llevo algo de tiempo sin tocarlo pero da igual). Hay que explicar muchas cosas y poner bastantes ejemplos de código y usando el formato code del foro no es muy bonito (lo que daría para que el código se resalte).

Si tienes skype, te envio un mp con mi nombre de usuario y alguna tarde hablamos y te ayudo por ahi porque me será mas cómodo o haré algún videotutorial usando XMLPull.
Responder Con Cita
  #5  
Viejo 30/03/12, 22:22:02
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Yo en cambio prefiero SAX, más que nada porque el manejador de ficheros XML de IOS está basado en SAX, y así me resulta muy fácil programar código a la vez en Android y iPhone.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 01/04/12, 11:05:40
Array

[xs_avatar]
monchyrcg monchyrcg no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Tu operador: Orange
Esto fue lo que hice con SAX.

Código:
File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "zonaVuelo/sitios.xml");
         StringBuilder builder = new StringBuilder();
         String escribir  = new String();
         if(f.exists() && f.canRead()){
            FileInputStream fileIN = null;
            try{
                  fileIN = new FileInputStream(f);
                byte [] reader = new byte[fileIN.available()];
                while(fileIN.read(reader)!= -1){ }
                builder.append(new String(reader));
                escribir = builder.substring(0, builder.length()-9);
             }catch(Exception ex){
               ex.printStackTrace();
            }finally{
               if(fileIN != null){
                  try{
                     fileIN.close();
                  }catch(IOException ioExcep){
                     ioExcep.printStackTrace();
                  }
               }
            }
         }
         if(f.exists() && f.canRead()){
            FileOutputStream fileOUT = null;
            try{
               fileOUT = new FileOutputStream(f);
               fileOUT.write((escribir+"\n Texto de prueba2. \n </sitios>").getBytes());
             }catch(Exception ex){
               ex.printStackTrace();
            }finally{
               if(fileOUT != null){
                  try{
                     fileOUT.flush();
                      fileOUT.close();
                  }catch(IOException ioExcep){
                     ioExcep.printStackTrace();
                  }
               }
            }
         }
Responder Con Cita
  #7  
Viejo 01/04/12, 11:06:52
Array

[xs_avatar]
monchyrcg monchyrcg no está en línea
Miembro del foro
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Tu operador: Orange
El problema no era el parseo eso es fácil el problema era leer el XML varias veces. Leyendo así sí me deja y de la otra manera no.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 18:08:44 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /