File IO

Internal Storage

Untitled

// use internal storage directory (you don't need permission)
// path = "/data/user/0/<package>/files"
val path = this.getFilesDir()
// Create your directory:
val directory = File(path, "tmp")
directory.mkdirs()

// Then create your file:
val file = File(directory, "test.txt")

// Then you can write to it:
file.writeText("Prima riga\\n")
file.appendText("aggiungo una nuova riga!\\n")
val inputAsString = FileInputStream(file).bufferedReader().use { it.readText() }
Log.i("MainActivity", inputAsString)

External storage

// use external storage directory (you need permission)
// /storage/emulated/0/Android/data/<your package>/files
val path = this.getExternalFilesDir(null)

// Create your directory:
val directory = File(path, "tmp")
directory.mkdirs()

// Then create your file:
val file = File(directory, "test.txt")

// Then you can write to it:
file.writeText("Prima riga\\n")
file.appendText("aggiungo una nuova riga!\\n")
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
val inputAsString = FileInputStream(file).bufferedReader().use { it.readText() }
Log.i("MainActivity", inputAsString)

File JSON

Viene usato per salvare semplici strutture dati e oggetti nella notazione Javascript Object Notaion (JSON), che è diventato un formato standard per lo scambio di dati.

E’ principalmente utilizzato per trasferire dati tra una web application e il server.

I file JSON sono leggeri, basati sul testo, leggibili da umani, ed editabili da un normalissimo editor.

Untitled

Cartella “assets”

Essa mette a disposizione un modo arbitrario di aggiungere file come txt, xml, html, fonts, audio, video all’interno dell’applicazione.

Se si prova ad aggiungere questi file nella cartella “res”, Android li tratterà come risorse e sarà impossibile ottenere il contenuto “raw”.

Se si vuole accedere ai dati nudi e crudi, la cartella “assets” è uno dei modi.

Un altro modo è creare una cartella res/raw, ma quale modo è meglio?

  1. Nomenclatura dei file flessibile (assets è meglio)