Tutoriel d’exemple de stockage interne Android

Aujourd’hui, nous allons explorer le stockage interne d’Android. Android offre quelques méthodes structurées pour stocker des données. Celles-ci incluent

Dans ce tutoriel, nous allons explorer l’enregistrement et la lecture de données dans des fichiers en utilisant le Stockage interne d’Android.

Stockage interne d’Android

Le stockage interne d’Android est l’enregistrement des données privées sur la mémoire de l’appareil. Par défaut, l’enregistrement et le chargement de fichiers dans le stockage interne sont privés à l’application, et les autres applications n’auront pas accès à ces fichiers. Lorsque l’utilisateur désinstalle l’application, les fichiers stockés internes associés à l’application sont également supprimés. Cependant, veuillez noter que certains utilisateurs rootent leurs téléphones Android, obtenant un accès superutilisateur. Ces utilisateurs pourront lire et écrire les fichiers qu’ils souhaitent.

Lecture et écriture de fichiers texte dans le stockage interne d’Android

Android propose les méthodes openFileInput et openFileOutput des classes Java I/O pour modifier les flux de lecture et d’écriture à partir et vers des fichiers locaux.

  • openFileOutput(): Cette méthode est utilisée pour créer et sauvegarder un fichier. Sa syntaxe est la suivante :

    FileOutputStream fOut = openFileOutput("nom du fichier", Context.MODE_PRIVATE);
    

    La méthode openFileOutput() retourne une instance de FileOutputStream. Ensuite, nous pouvons appeler la méthode write pour écrire des données dans le fichier. Sa syntaxe est la suivante :

    String str = "données de test";
    fOut.write(str.getBytes());
    fOut.close();
    
  • openFileInput(): Cette méthode est utilisée pour ouvrir un fichier et le lire. Elle renvoie une instance de FileInputStream. Sa syntaxe est donnée ci-dessous :

    FileInputStream fin = openFileInput(file);
    

    Ensuite, nous appelons la méthode read pour lire un caractère à la fois à partir du fichier, puis l’imprimer. Sa syntaxe est donnée ci-dessous :

    int c;
    String temp="";
    while( (c = fin.read()) != -1){
       temp = temp + Character.toString((char)c);
    }
    
    fin.close();
    

    Dans le code ci-dessus, la chaîne temp contient toutes les données du fichier.

  • Notez que ces méthodes n’acceptent pas les chemins de fichiers (par exemple, chemin/vers/fichier.txt), elles prennent simplement des noms de fichiers simples.

Structure de projet de stockage interne Android

Exemple de code de stockage interne Android

La mise en page xml contient un EditText pour écrire des données dans le fichier et un bouton Écrire et un bouton Lire. Notez que les méthodes onClick sont définies uniquement dans le fichier xml comme indiqué ci-dessous : activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:padding="5dp"
        android:text="Android Read and Write Text from/to a File"
        android:textStyle="bold"
        android:textSize="28sp" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="22dp"
        android:minLines="5"
        android:layout_margin="5dp">

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Write Text into File"
        android:onClick="WriteBtn"
        android:layout_alignTop="@+id/button2"
        android:layout_alignRight="@+id/editText1"
        android:layout_alignEnd="@+id/editText1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Read Text From file"
        android:onClick="ReadBtn"
        android:layout_centerVertical="true"
        android:layout_alignLeft="@+id/editText1"
        android:layout_alignStart="@+id/editText1" />

</RelativeLayout>

La classe MainActivity contient l’implémentation de la lecture et de l’écriture dans les fichiers comme expliqué ci-dessus.

package com.journaldev.internalstorage;


import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class MainActivity extends Activity {

    EditText textmsg;
    static final int READ_BLOCK_SIZE = 100;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textmsg=(EditText)findViewById(R.id.editText1);
    }

    // écrire du texte dans un fichier
    public void WriteBtn(View v) {
        // ajouter-écrire du texte dans un fichier
        try {
            FileOutputStream fileout=openFileOutput("mytextfile.txt", MODE_PRIVATE);
            OutputStreamWriter outputWriter=new OutputStreamWriter(fileout);
            outputWriter.write(textmsg.getText().toString());
            outputWriter.close();

            // afficher le message de fichier enregistré
            Toast.makeText(getBaseContext(), "File saved successfully!",
                    Toast.LENGTH_SHORT).show();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Lire du texte à partir d'un fichier
    public void ReadBtn(View v) {
        // lire du texte à partir d'un fichier
        try {
            FileInputStream fileIn=openFileInput("mytextfile.txt");
            InputStreamReader InputRead= new InputStreamReader(fileIn);

            char[] inputBuffer= new char[READ_BLOCK_SIZE];
            String s="";
            int charRead;

            while ((charRead=InputRead.read(inputBuffer))>0) {
                // conversion de char en string
                String readstring=String.copyValueOf(inputBuffer,0,charRead);
                s +=readstring;
            }
            InputRead.close();
            textmsg.setText(s);
            

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Ici, un toast est affiché lorsque les données sont écrites avec succès dans le stockage interne et les données sont affichées dans l’EditText lui-même lors de la lecture des données à partir du fichier. L’image ci-dessous est la sortie du projet. L’image montre du texte écrit dans le stockage interne et en cliquant sur Lire, il affiche à nouveau le texte dans le même EditText.

Où se trouve le fichier?

Pour voir réellement le fichier, ouvrez le Moniteur de périphériques Android depuis Outils->Android->Moniteur de périphériques Android. Le fichier est présent dans le dossier data->data->{nom du package}->files comme indiqué dans les images ci-dessous: Le fichier « mytextfile.txt » se trouve dans le nom du package du projet, c’est-à-dire com.journaldev.internalstorage comme indiqué ci-dessous: Téléchargez le projet final pour exemple de stockage interne Android depuis le lien ci-dessous.

Télécharger le projet d’exemple de stockage interne Android

Source:
https://www.digitalocean.com/community/tutorials/android-internal-storage-example-tutorial