Creare file in Android
Diciamo che quasi tutte le app hanno bisogno di scrivere delle informazioni da qualche parte.
Ad esempio, nel mio caso, ho una appa che prende i dati da dei file JSON, memorizzati nella memoria dello smartphone.
Oggi vediamo come creare i file attraverso le nostre app Android.
Prima di tutto nell'Activity (o nel Fragment) impostiamo il path generale di dove salvare i file:
private String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator;
Il metodo getExternalStorageDirectory identifica, appunto, lo external storage di un dispositivo.
A questo punto vediamo come creare i file; nel mio esempio interrogo una base dati in remoto, e con i dati restuiti creo il file.
Avrò quindi una classe AsyncTask che richiama tutto il resto:
public class DownloadDatas extends AsyncTask<Object, Object, Object> {
@Override
protected Object doInBackground(Object... params) {
Service s = new Service();
try {
JsonFile.create(path + "last_entries.json", s.getLastItems("last_entries.php"));
} catch (ClientProtocolException e) {
} catch (IOException e) {
} catch (JSONException e) {
}
return null;
}
}
L'oggetto Service è quello che si preoccupa di interrogare un web service remoto.
Di questo ne ho già parlato e quindi non mi ci soffermo.
Vi mostro solo cosa fa il metodo getLastItems:
public InputStream getLastItems(String phpFile) throws ClientProtocolException, IOException, JSONException {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(remote + phpFile);
HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
return entity.getContent();
}
A questo punto invece vediamo quello che ci interessa (qui vi ho mostrato come fare nel caso in cui i dati li prendiamo via web, ma ovviamente ognuno avrà le sue esigenze):
public class JsonFile {
public static void create(String strFile, InputStream in) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
BufferedWriter bw = new BufferedWriter(new FileWriter(strFile));
bw.write(reader.readLine());
reader.close();
bw.flush();
bw.close();
}
}
Il metodo create vuole due parametri: il file da salvare e l'input di cosa mettere nel file.
Con un BufferedReader leggiamo l'input che ci arriva (un InputStream).
Sotto usiamo BufferedWriter e FileWriter per scrivere dentro al file; infine facciamo pulizia.
Qua non c'è un controllo sull'esistenza del file (a me non serve) ma considerate che si vi dovesse servire dovete implementarlo; quindi fateci caso.
Per il resto, diciamo che il secondo passaggio non è indispensabile; o meglio, dipende da voi dove prendete i dati.
Ma alla fine potete comunque usare il metodo create visto sopra, in quanto sempre di quei due parametri ha bisogno.
Ciao!
java android bufferedereader bufferedwriter as
Commentami!