Capita alle volte di voler salvare dei dati così da non perdere il loro valore in un secondo momento.
Android dispone di un comando molto semplice per scrivere dei valori in formato testo nella memoria interna del dispositivo, in questo caso all’interno dei nostri pannelli Ltouch e pLtouch e successivamente recuperarli.
Premetto che questa procedura rende i dati che andiamo a salvare privati, ciò vuol dire che solamente la nostra app potrà accedervi e nessun’altra e nel momento in cui la disinstalleremo tutti i dati verranno persi.
Troverete molto utile questo Tutorial
Android dispone delle classi openFileInput e openFileOutput per scambiare dei pacchetti alla memoria interna.
- openFileOutput : è il metodo per creare e salvare un file
FileOutputStream fOut = openFileOutput("file name",Context.MODE_PRIVATE);
Il metodo restituisce un’istanza FileOutputStream, così è possibile richiamarla e scrivere i dati sul file:
String str = "test data"; fOut.write(str.getBytes()); fOut.close();
- openFileInput () : Questo metodo viene utilizzato per aprire un file e leggerlo. Tale restituisce un’istanza di FileInputStream.
FileInputStream fin = openFileInput(file)
Dopodichè chiamamiamo quest’isanza per leggere un carattere alla volta e rappresentarlo:
int c; String temp=""; while( (c = fin.read()) != -1){ temp = temp + Character.toString((char)c); } fin.close();
Vediamo ora un esempio pratico:
Supponiamo che si voglia salvare un dato e renderlo nel gergo tecnico dei plc ” ritentivo “, in poche parole che al riavvio della nostra app il dato non si perda, ma che si possa recuperarlo.
Salviamo il dato alla pressione di un bottone:
@Override public void onClick(View v) { if (v.getId()==R.id.btnWrite){ // add-write text into file try { FileOutputStream fileout=openFileOutput("BieMmeItalia.txt", MODE_PRIVATE); OutputStreamWriter outputWriter=new OutputStreamWriter(fileout); outputWriter.write("250"); outputWriter.close(); //display file saved message Toast.makeText(getBaseContext(), "File saved successfully!", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); } } }
All’avvio dell’app andiamo a leggere il valore nel file di testo allocato nella memoria del dispostivo e poi lo rappresentiamo a video tramite una texView:
@Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView valreadtoMemory = (TextView)findViewById(R.id.editText1); try { FileInputStream fileIn=openFileInput("BieMmeItalia.txt"); InputStreamReader InputRead= new InputStreamReader(fileIn); char[] inputBuffer= new char[READ_BLOCK_SIZE]; String s1=""; int charRead; while ((charRead=InputRead.read(inputBuffer))>0) { // char to string conversion String readstring=String.copyValueOf(inputBuffer,0,charRead); s1 +=readstring; } InputRead.close(); valreadtoMemory.setText(s1); } catch (Exception e) { e.printStackTrace(); } }
Per maggior informazioni troverete del materiale anche nel nostro WiKi