Creare file in Android

Mattepuffo's logo
Creare file in Android

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!


Condividi

Commentami!