Leggere file in Android
La gestione dei file in Android è più semplice di quello che si pensi.
Nel mio caso ho una app che usa dei file JSON per avere sempre i dati offline; file scaricati da un server remoto.
Sono in formato JSON per riempire una ListView, ma il concetto va bene per qualsiasi tipo di file.
I miei file sono salvati nell'external storage, quindi prima di tutto impostiamo i permessi nel manifest:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Poi nell'Activity impostiamo il path verso lo storage (mi raccomando, metterlo nell'activity):
private String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator;
Questo rappresenta la external storage directory, al quale dobbiamo aggiungere poi il file che ci interessa.
Adesso il metodo per leggere il file:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;public class JsonFile {
public static String read(String strFile) throws IOException {
File file = new File(strFile);
StringBuilder sb = new StringBuilder();
if(file.exists()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
reader.close();
}
return sb.toString();
}
}
A questo punto nella nostra Activity riempiamo la ListView:
try {
JSONArray jsonArray = new JSONArray(JsonFile.read(path + "last_entries.json"));
for(int i = 0; i < jsonArray.length(); i++) {
JSONObject jo = jsonArray.getJSONObject(i);
HashMap<String, String> map = new HashMap<String, String>();
map.put("valore", jo.getString("valore"));
list.add(map);
}
} catch (ClientProtocolException ex) {
} catch (IOException ex) {
} catch (JSONException ex) {
}
adapter = new SimpleAdapter(getActivity(), list, R.layout.list_items, new String[] { "valore" },
new int[] { R.id.txt_valore });
lv.setAdapter(adapter);
A JsonFile.read passiamo il path relativo all'external storage più il file da leggere.
Poi riempiamo la ListView dal contenuto del file.
Così facendo abbiamo trasformato questo esempio, che prendeva i dati direttamente da database, in una app offline.
Dovete solo creare le azioni per la creazione e l'aggiornamento in modo che l'utente possa avere i dati sincronizzati con il db.
Ciao!
android java getexternalstoragedirectory file
Commentami!