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


 
Herramientas
  #1  
Viejo 16/07/13, 22:36:28
Avatar de Bongiovi
Bongiovi Bongiovi no está en línea
Miembro del foro
Mensajes: 186
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
Mencionado: 0 comentarios
Tagged: 0 hilos
Problema con edición de archivo de texto.

Quiero editar un archivo de texto cada vez que se ejecute una activity, para ello utilizo este código:

Código:
try
{
    OutputStreamWriter file = new  OutputStreamWriter(openFileOutput("archivo.txt", Context.MODE_PRIVATE));
    file.write(index + "\n");
    file.close();
}
catch (Exception ex)
{
}
El problema (supongo que es evidente), es que sobreescribe el archivo previamente creado, en vez de editarlo.
Cómo soluciono ésto?

Un saludo.

Última edición por Bongiovi Día 16/07/13 a las 22:39:10
Responder Con Cita


  #2  
Viejo 16/07/13, 23:02:35
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Context.MODE_PRIVATE sobreescribe, Context.MODE_APPEND escribe a partir del final
Responder Con Cita
  #3  
Viejo 17/07/13, 00:52:57
Avatar de Bongiovi
Bongiovi Bongiovi no está en línea
Miembro del foro
Mensajes: 186
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
Mencionado: 0 comentarios
Tagged: 0 hilos
Vale, ya consigo crear el archivo o editarlo cuando corresponde. Ahora el problema viene con los caracteres, que salen en chino tanto al mostrarlo en una Activity como al abrirlo con cualquier Editor de Texto.

Ahí va el código:

- Creación/Edición del archivo.


Código:
File fichero = new File("/data/data/com.loquesea.loquesea/files/archivo.txt");
if(fichero.exists())
{
		try
		{					
			OutputStreamWriter file = new OutputStreamWriter(openFileOutput("archivo.txt", Context.MODE_APPEND));
			file.write(index);
			file.close();
			Toast.makeText(getApplicationContext(), "archivo.txt EXISTE : " + index, Toast.LENGTH_SHORT).show();
		}
		catch (Exception ex)
		{
			Toast.makeText(getApplicationContext(), "EXISTE Y ERROR", Toast.LENGTH_SHORT).show();
		}		
}
else
{
		try
		{					
			OutputStreamWriter file = new OutputStreamWriter(openFileOutput("archivo.txt", Context.MODE_PRIVATE));
			file.write(index + " iteraciones");
			file.close();
			Toast.makeText(getApplicationContext(), "archivo.txt NO EXISTE : " + index, Toast.LENGTH_SHORT).show();
		}
		catch (Exception ex)
		{
			Toast.makeText(getApplicationContext(), "NO EXISTE Y ERROR", Toast.LENGTH_SHORT).show();
		}		
}

Utilizo los Toast para "depurar" y parece que crea/edita cuando corresponde.

- Lectura del archivo (en otra Activity).


Código:
TextView view;
	
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);                             
        setContentView(R.layout.scores_activity);
        String texto; 
        String contenido = null;
    	view = (TextView) findViewById(R.id.Scores);
    	
        try
        {	
        	BufferedReader leer = new BufferedReader(new InputStreamReader(openFileInput("archivo.txt")));
        	
        	while((texto = leer.readLine()) != null)
        	{        			        		
        		contenido += texto + "\n";        		
        		Toast.makeText(getApplicationContext(), "Se ha leído : " + texto, Toast.LENGTH_SHORT).show();
        	}
        	view.setText(contenido);
        	view.setVisibility(TextView.VISIBLE);
        	leer.close();
        }
        catch (Exception ex)
        {
        	Toast.makeText(getApplicationContext(), "No lo lee", Toast.LENGTH_SHORT).show();
        }
    }

Ya digo que los caracteres aparecen en chino
Responder Con Cita
  #4  
Viejo 17/07/13, 07:48:42
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Eso es por escribir un int a secas con el write, que lo interpreta como un codigo del caracter no como el número.

Haz un write("" + index) o simplemente usa una variable de tipo String
Responder Con Cita
  #5  
Viejo 17/07/13, 12:47:45
Avatar de Bongiovi
Bongiovi Bongiovi no está en línea
Miembro del foro
Mensajes: 186
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por mocelet Ver Mensaje
Eso es por escribir un int a secas con el write, que lo interpreta como un codigo del caracter no como el número.

Haz un write("" + index) o simplemente usa una variable de tipo String
Eso era, gracias ;)
Además he sustituido el String "contenido" por un StringBuilder, que da mejor resultado.
Responder Con Cita
Respuesta

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


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 13:48:37 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007