23 Dateisysteme

Dateisystem in Android

Android bietet auch Zugriff auf ein Dateisystem, in dem Sie Daten speichern können. Es gibt zwei Haupttypen von Speicher in Android: Interner Speicher und externer Speicher.

Der interne Speicher ist der Speicher, der von Ihrer App privat verwendet wird. Andere Apps haben keinen Zugriff auf diesen Speicher. Sie können Dateien im internen Speicher erstellen, indem Sie die openFileOutput()-Methode verwenden.

Der externe Speicher ist ein Speicher, auf den auch andere Apps zugreifen können. In neueren Versionen von Android müssen Sie eine Berechtigung anfordern, um auf den externen Speicher zuzugreifen. Sie können Dateien im externen Speicher erstellen, indem Sie die getExternalFilesDir()-Methode verwenden.

Es ist wichtig zu beachten, dass das Arbeiten mit dem Dateisystem in Android auch auf einem Hintergrundthread ausgeführt werden muss, um den Hauptthread nicht zu blockieren.

In Android können Sie auf Dateien im internen Speicher (spezifisch für Ihre App und von anderen Apps nicht zugänglich) oder im externen Speicher (geteilt und für alle Apps zugänglich) zugreifen. Hier sind einige Beispiele, wie Sie das tun können:

Dateizugriff im internen Speicher

Zum Schreiben einer Datei im internen Speicher:

String filename = "myfile";
String fileContents = "Hello world!";
FileOutputStream outputStream;

try {
    outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
    outputStream.write(fileContents.getBytes());
    outputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}

Zum Lesen einer Datei aus dem internen Speicher:

String filename = "myfile";

try {
    FileInputStream inputStream = openFileInput(filename);
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    StringBuilder stringBuilder = new StringBuilder();
    String line;
    while ((line = bufferedReader.readLine()) != null) {
        stringBuilder.append(line);
    }
    inputStream.close();
    String fileContents = stringBuilder.toString();
    // Verwenden Sie jetzt fileContents...
} catch (Exception e) {
    e.printStackTrace();
}

Dateizugriff im externen Speicher

Zum Schreiben einer Datei im externen Speicher:

String filename = "myfile";
String fileContents = "Hello world!";
File file = new File(Environment.getExternalStorageDirectory(), filename);

try {
    FileOutputStream outputStream = new FileOutputStream(file);
    outputStream.write(fileContents.getBytes());
    outputStream.close();
} catch (Exception e) {
    e.printStackTrace();
}

Zum Lesen einer Datei aus dem externen Speicher:

String filename = "myfile";
File file = new File(Environment.getExternalStorageDirectory(), filename);

try {
    FileInputStream inputStream = new FileInputStream(file);
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
    StringBuilder stringBuilder = new StringBuilder();
    String line;
    while ((line = bufferedReader.readLine()) != null) {
        stringBuilder.append(line);
    }
    inputStream.close();
    String fileContents = stringBuilder.toString();
    // Verwenden Sie jetzt fileContents...
} catch (Exception e) {
    e.printStackTrace();
}

Bitte beachten Sie, dass für den Zugriff auf den externen Speicher ab Android 6.0 (API-Level 23) Laufzeitberechtigungen erforderlich sind. Sie müssen den Nutzern erklären, warum Ihre App diese Berechtigungen benötigt, und sie um Erlaubnis bitten, bevor Sie auf den externen Speicher zugreifen.

Darüber hinaus sollten Sie sich bewusst sein, dass sich der Zugriff auf Dateien mit Android 10 (API-Level 29) und höher aufgrund der Einführung von Scoped Storage geändert hat. Die oben gezeigten Beispiele könnten in neueren Android-Versionen nicht mehr funktionieren, abhängig von Ihrem Ziel-API-Level und ob Sie Scoped Storage in Ihrer App aktiviert haben oder nicht.