Android Tutorial: Nutzung des Internen Speichers zur Datenverwaltung

In diesem Beitrag schauen wir uns den internen Speicher von Android an. Android bietet verschiedene strukturierte Möglichkeiten, Daten zu speichern. Dazu gehören:

    • Shared Preferences
    • Interner Speicher
    • Externer Speicher
    • SQLite Speicher
    • Netzwerkverbindungsspeicher (Cloud)

Android Interner Speicher

Der interne Speicher von Android ist der Bereich für private Daten auf dem Gerätespeicher. Standardmäßig sind gespeicherte und geladene Dateien im internen Speicher nur für die Anwendung sichtbar und andere Anwendungen haben keinen Zugriff darauf. Wenn der Benutzer die Anwendung deinstalliert, werden die damit verbundenen Dateien ebenfalls entfernt. Beachten Sie jedoch, dass einige Benutzer ihre Android-Telefone rooten und damit Superuser-Zugriff erhalten, wodurch sie alle Dateien lesen und schreiben können.

Lesen und Schreiben von Textdateien im internen Speicher

Android bietet die Methoden openFileInput und openFileOutput aus den Java I/O-Klassen, um Lese- und Schreibströme zu lokalen Dateien zu verwalten.

      • openFileOutput(): Diese Methode wird verwendet, um eine Datei zu erstellen und zu speichern. Die Syntax lautet:

        FileOutputStream fOut = openFileOutput("dateiname", Context.MODE_PRIVATE);

        Diese Methode gibt eine Instanz von FileOutputStream zurück. Anschließend kann die write-Methode aufgerufen werden, um Daten in die Datei zu schreiben:

        
        
        String str = "Testdaten";
        fOut.write(str.getBytes());
        fOut.close();

      • openFileInput(): Diese Methode wird verwendet, um eine Datei zu öffnen und zu lesen. Sie gibt eine Instanz von FileInputStream zurück. Die Syntax lautet:

        FileInputStream fin = openFileInput("dateiname");

        Anschließend kann die read-Methode aufgerufen werden, um Zeichen für Zeichen aus der Datei zu lesen:

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

        In diesem Code enthält die Variable temp alle Daten der Datei.

Beachten Sie: Diese Methoden akzeptieren keine Dateipfade (z.B. path/to/file.txt), sondern nur einfache Dateinamen.

Beispiel für ein Android-Projekt zur Nutzung des internen Speichers

Die XML-Layoutdatei (activity_main.xml) enthält ein EditText-Feld zum Schreiben von Daten in die Datei sowie einen Schreib- und einen Lesebutton. Die

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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: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_below="@+id/textView1"
        android:minLines="5">
        <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" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Read Text From file"
        android:onClick="ReadBtn" />
</RelativeLayout>

Die MainActivity enthält die Implementierung des Lese- und Schreibvorgangs:

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);
    }

    public void WriteBtn(View v) {
        try {
            FileOutputStream fileout = openFileOutput("mytextfile.txt", MODE_PRIVATE);
            OutputStreamWriter outputWriter = new OutputStreamWriter(fileout);
            outputWriter.write(textmsg.getText().toString());
            outputWriter.close();
            Toast.makeText(getBaseContext(), "File saved successfully!", Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void ReadBtn(View v) {
        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) {
                String readstring = String.copyValueOf(inputBuffer, 0, charRead);
                s += readstring;
            }
            InputRead.close();
            textmsg.setText(s);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Eine Toast-Nachricht wird angezeigt, wenn die Daten erfolgreich im internen Speicher gespeichert wurden. Beim Lesen werden die Daten im EditText angezeigt.

Um die Datei zu sehen, öffnen Sie den Android Device Monitor über Tools -> Android -> Android Device Monitor. Die Datei befindet sich im Ordner data -> data -> {Paketname} -> files.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: