¿Cómo almaceno archivos en un teléfono Android?

Al crear una aplicación de Android, tengo algunos archivos que deben almacenarse en el propio Android.

¿Cómo hago esto?

preguntado el 04 de julio de 12 a las 09:07

no puede acceder a la memoria interna de su teléfono a través de DDMS. use la carpeta de activos en su aplicación y cópiela en la memoria interna mediante programación. -

@MahiMali: consulte esta documentación sobre almacenamiento de datos ...desarrollador.android.com/guide/topics/data/data-storage.html -

Por favor, ¿puede mostrarme cómo copiar a la memoria interna de forma progrmática? -

En realidad, solo quería crear archivos primero. Después de la implementación en dispositivos móviles, esos archivos deberían estar en ese sistema móvil y se pueden leer o escribir datos de esos archivos creados. Entonces, ¿alguien puede ayudarme? -

@PadmaKumar: no aconseje a las personas que codifiquen una ruta como data/data/your.package/files/ - No se garantiza que funcione. Existen métodos de ayuda para encontrar directorios internos y externos que se explican en el enlace que publiqué en mi comentario anterior. -

3 Respuestas

Si tiene archivos locales, como algunos tonos de error, algún video de apertura ... luego colóquelo en usted assets folder of your project.

Si necesita descargar datos dinámicos en tiempo de ejecución, utilice este guía.

Respondido 04 Jul 12, 09:07

El mejor lugar para archivos genéricos sería el assets carpeta.

Puede acceder a los archivos a través de la AssetManager, que puedes conseguir con Activity.getAssets() por ejemplo.

Aquí hay un ejemplo de cómo puede acceder a un archivo de texto:

try {
    BufferedReader br = new BufferedReader(
        new InputStreamReader(getAssets().open("sometextfile.txt")));

        // do stuff with br
} catch (IOException e) {
        e.printStackTrace();
}

Para obtener más información sobre AssetManager leer el documento de Java. Ah, y sí, puede crear carpetas en activos.

Respondido 04 Jul 12, 10:07

Por favor, ¿puede informarme sobre cómo escribir y leer archivos desde la carpeta de activos? ¿Podemos crear carpetas en activos? - Mahi Malí

Dígame, ¿podemos leer y escribir ambos desde la carpeta de activos? - Mahi Malí

No, no puedes escribirle. Como Squonk señaló anteriormente, puedes leer desarrollador.android.com/guide/topics/data/data-storage.html para obtener más información sobre las opciones para almacenar archivos. - Don ho

Si desea conservar algunos archivos como readme.txt o incluso archivos de música, puede usar la carpeta sin procesar dentro de res carpeta. Así que crea una carpeta llamada raw dentro de res carpeta.

Dentro de la carpeta sin procesar, supongamos que hay un archivo llamado readme.txt, asumiendo que la clase Activity se llama MyActivity.

Ahora, puede leer el contenido de un archivo en una cadena como se muestra a continuación:

StringBuilder strContents = new StringBuilder();
String thisLine;
InputStream is = MyActivity.this.getResources().openRawResource(R.raw.readme);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while ((thisLine = br.readLine()) != null) { // while loop begins here
    strContents.append(thisLine);
}
br.close();
//Now you have the data in strContents

Alternativamente, assets también es una de esas carpetas que puede usar, ya que la carpeta sin formato contiene el archivo tal como está sin ninguna optimización, comprimida por Android.

Así que crea un assets carpeta en la carpeta raíz de su proyecto y coloque sus archivos allí, por ejemplo myfile.

Ahora, puede obtener una instancia del archivo InputStream como se indica a continuación:

InputStream is = getBaseContext().getAssets().open("mydb");

Respondido 04 Jul 12, 10:07

Oye por favor respondeme can we read and write both from raw folder? - Mahi Malí

Que yo sepa, no se puede escribir a un raw carpeta. Debe usar una de las opciones de persistencia en Android: Archivos / Preferencias compartidas / Bases de datos. Esto creará archivos en el área de espacio aislado para su aplicación. - Romín

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.