0Pricing
Flutter Mobile Development · Lektion

Dateisystemoperationen

Lernen Sie, aus dem Dateisystem des Geräts zu lesen und darin zu schreiben, um größere Dateien und benutzerdefinierte Datenformate zu speichern.

Dateisystemoperationen ist eine kostenlose Flutter Mobile Development-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Flutter Mobile Development-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Flutter Mobile Development-Kurs umfasst insgesamt 4 Lektionen.

Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.

Storing Data in Files

Sometimes, your app needs to store data directly on the device. This is where file system operations come in! Unlike shared_preferences (for small key-value data) or sqflite (for structured data), file system operations allow you to manage files directly.

You can store larger pieces of data, like images, audio, or custom formatted text files, that don't fit well into a database or simple key-value pairs.

Where to Store Files?

Before you can read or write files, your app needs to know where it can store them. Flutter provides the path_provider package to help you find common directory paths safely across different platforms (iOS, Android, web, desktop).

  • Application Documents Directory: This is where your app can store user-specific data that should persist.
  • Temporary Directory: For data that doesn't need to persist across app launches, like cached files.

Getting Application Path

Let's use path_provider to get the application documents directory. Remember to add path_provider to your pubspec.yaml first!

dependencies:
flutter:
sdk: flutter
path_provider: ^2.0.11

import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() async {
  // Get the application documents directory
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String appDocPath = appDocDir.path;

  print('App Documents Path: $appDocPath');
}

Creating a File Reference

Once you have a directory path, you can create a File object. This object represents the file at that specific path on the device's storage. It doesn't mean the file actually exists yet, it's just a reference.

You'll combine the directory path with your desired filename to construct the full file path.

Constructing a File Path

Here's how you can combine the application documents path with a filename to create a File object. We'll use a simple text file name for our example.

import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() async {
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String appDocPath = appDocDir.path;

  // Define a filename
  String fileName = 'my_data.txt';

  // Create a File object
  File file = File('$appDocPath/$fileName');

  print('File path reference created: ${file.path}');
  // At this point, the file might not exist on disk yet.
}

Saving Content to Files

The File object provides methods to write data. The most common ones are writeAsString() for text and writeAsBytes() for binary data. These operations are asynchronous, so you'll use await.

  • writeAsString(String contents, {FileMode mode = FileMode.write}): Writes text. FileMode.write overwrites, FileMode.append adds to the end.
  • writeAsBytes(List<int> bytes, {FileMode mode = FileMode.write}): Writes raw bytes.

Writing a Simple Text File

Let's write some text content to our my_data.txt file. If the file doesn't exist, writeAsString will create it. If it does exist, it will overwrite its content by default.

import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() async {
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String appDocPath = appDocDir.path;
  String fileName = 'my_data.txt';
  File file = File('$appDocPath/$fileName');

  String content = 'Hello, CoddyKit learners!\nThis is a test message.';

  try {
    await file.writeAsString(content);
    print('Content written to ${file.path}');
    print('File exists: ${await file.exists()}');
  } catch (e) {
    print('Error writing file: $e');
  }
}

Reading Content from Files

Just as you can write, you can also read content back from files. The readAsString() method is perfect for text files, while readAsBytes() is used for binary data.

It's good practice to check if a file exists() before trying to read from it to prevent errors.

Reading a File's Content

Now, let's read the content we just wrote back from my_data.txt. We'll first check if the file exists to be safe.

import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() async {
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String appDocPath = appDocDir.path;
  String fileName = 'my_data.txt';
  File file = File('$appDocPath/$fileName');

  if (await file.exists()) {
    try {
      String content = await file.readAsString();
      print('Content read from ${file.path}:\n$content');
    } catch (e) {
      print('Error reading file: $e');
    }
  } else {
    print('File does not exist: ${file.path}');
  }
}

Removing Files

When data is no longer needed, you can delete files from the device's storage. The delete() method on a File object will remove it. This operation is also asynchronous.

Be careful when deleting files, as this action is usually irreversible!

Check Your Understanding

Which of the following statements about Flutter file system operations are TRUE?

Lesson Summary

Great job! In this lesson, you've learned how to interact with the device's file system in Flutter:

  • Used path_provider to find appropriate storage directories.
  • Created File objects to reference specific files.
  • Wrote content to files using writeAsString().
  • Read content from files using readAsString().
  • Understood how to delete files with delete().

File system operations are crucial for storing large, custom-formatted, or sensitive data directly on the device. Next, you can explore more advanced data handling or move on to other Flutter topics!

Häufig gestellte Fragen

Ist die Lektion „Dateisystemoperationen“ kostenlos?

Ja — der vollständige Text von „Dateisystemoperationen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Flutter Mobile Development-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Flutter Mobile Development-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Dateisystemoperationen“?

Lernen Sie, aus dem Dateisystem des Geräts zu lesen und darin zu schreiben, um größere Dateien und benutzerdefinierte Datenformate zu speichern. Du übst Flutter Mobile Development mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Flutter Mobile Development zu starten?

Keine Vorkenntnisse erforderlich. Flutter Mobile Development auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Dateisystemoperationen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Flutter Mobile Development-Lektion Code schreiben und ausführen?

Ja. Jede Flutter Mobile Development-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Shared Preferences für Daten
  2. Integration von SQLite-Datenbanken
  3. Dateisystemoperationen
  4. Hive und lokale NoSQL-Speicherung
← Zurück zu Flutter Mobile Development